tests: avoid spurious failure on old kernel
authorEric Blake <ebb9@byu.net>
Fri, 8 Jan 2010 19:01:08 +0000 (12:01 -0700)
committerEric Blake <ebb9@byu.net>
Tue, 12 Jan 2010 13:00:05 +0000 (06:00 -0700)
* tests/touch/no-dereference: Skip test if utimensat doesn't
support symlinks.
Reported by Bernhard Voelker.

tests/touch/no-dereference

index 7adacc4..c1a6748 100755 (executable)
@@ -48,8 +48,17 @@ grep '^#define HAVE_LUTIMES' "$CONFIG_HEADER" > /dev/null ||
   skip_test_ 'this system lacks the utimensat function'
 
 # Changing time of dangling symlink is okay.
-touch -h dangling || fail=1
-test -f nowhere && fail=1
+# Skip the test if this fails, but the error text corresponds to
+# ENOSYS (possible with old kernel but new glibc).
+touch -h dangling 2> err
+case $? in
+  0) test -f nowhere && fail=1
+     test -s err && fail=1;;
+  1) grep 'Function not implemented' err \
+       && skip_test_ 'this system lacks the utimensat function'
+     fail=1;;
+  *) fail=1;;
+esac
 
 # Change the mtime of a symlink.
 touch -m -h -d 2009-10-10 link || fail=1