tests/libtest: Factor out user xattr detection
authorColin Walters <walters@verbum.org>
Mon, 18 Sep 2017 17:58:54 +0000 (13:58 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 21 Sep 2017 13:21:59 +0000 (13:21 +0000)
Make the equivalent of a `GOnce` or Rust `lazy_static!` detecting this and share
it between the two callers.

Prep for a future similar patch for strace fault injection.

Closes: #1186
Approved by: jlebon

tests/libtest.sh

index 1ae04a749e191bc5b3428df3c939842bdc588d66..5017abea47fcec2f4b822a62006b17963031c4a0 100755 (executable)
@@ -515,9 +515,21 @@ os_repository_new_commit ()
 }
 
 # Usage: if ! skip_one_without_user_xattrs; then ... more tests ...; fi
+_have_user_xattrs=''
+have_user_xattrs() {
+    if test "${_have_user_xattrs}" = ''; then
+        touch test-xattrs
+        if setfattr -n user.testvalue -v somevalue test-xattrs 2>/dev/null; then
+            _have_user_xattrs=yes
+        else
+            _have_user_xattrs=no
+        fi
+        rm -f test-xattrs
+    fi
+    test ${_have_user_xattrs} = yes
+}
 skip_one_without_user_xattrs () {
-    touch test-xattrs
-    if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
+    if ! have_user_xattrs; then
         echo "ok # SKIP - this test requires xattr support"
         return 0
     else
@@ -526,9 +538,9 @@ skip_one_without_user_xattrs () {
 }
 
 skip_without_user_xattrs () {
-    touch test-xattrs
-    setfattr -n user.testvalue -v somevalue test-xattrs || \
+    if ! have_user_xattrs; then
         skip "this test requires xattr support"
+    fi
 }
 
 skip_without_fuse () {