From: Paul Eggert Date: Thu, 5 Oct 2006 22:10:08 +0000 (+0000) Subject: * tests/ls/stat-dtype: Use a dynamic test to decide whether the X-Git-Tag: COREUTILS-6_4~69 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=08984eef49d4a05beebcce00ebd58caf8bbf5d7a;p=thirdparty%2Fcoreutils.git * tests/ls/stat-dtype: Use a dynamic test to decide whether the current file system has useful d_type info. --- diff --git a/ChangeLog b/ChangeLog index f394bb4ef2..10f177fc37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-10-05 Paul Eggert + * tests/ls/stat-dtype: Use a dynamic test to decide whether the + current file system has useful d_type info. + * src/dd.c (flags): noatime and nofollow now depend on HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, too. (usage): Output info about noatime and nofollow only if diff --git a/tests/ls/stat-dtype b/tests/ls/stat-dtype index 153195cd32..3f509a2d9b 100755 --- a/tests/ls/stat-dtype +++ b/tests/ls/stat-dtype @@ -30,33 +30,6 @@ fi . $srcdir/../envvar-check -# Skip this test unless "." is on a file system with useful d_type info. -# FIXME: use a more dynamic test for this, since whether d_type is useful -# depends on much more than the file system type. For example, with -# linux-2.6.15, at least tmpfs and ext3 work, but reiserfs and xfs don't. -# Also, tmpfs on Solaris 10 lacks d_type support. -skip=yes -fs_type=`stat -f --printf %T .` - -linux_2_6_or_newer=0 -case `uname -r` in - [01].*) ;; - 2.[0-5]*) ;; - *) linux_2_6_or_newer=1 ;; -esac - -test `uname -s` = Linux \ - && test $linux_2_6_or_newer = 1 \ - && test $fs_type = tmpfs \ - && skip=no -test $fs_type = ext2/ext3 && skip=no -test $skip = yes && - { - echo "$0: '.' is not on a suitable file system for this test" 1>&2 - echo "$0: skipping this test" 1>&2 - (exit 77); exit 77 - } - pwd=`pwd` t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$ trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0 @@ -66,6 +39,17 @@ framework_failure=0 mkdir -p $tmp || framework_failure=1 cd $tmp || framework_failure=1 +# Skip this test unless "." is on a file system with useful d_type info. +# FIXME: This uses "ls -p" to decide whether to test "ls" with other options, +# but if ls's d_type code is buggy then "ls -p" might be buggy too. +mkdir -p c/d || framework_failure=1 +chmod a-x c || framework_failure=1 +if test "X`ls -p c 2>&1`" != Xd/; then + echo "$0: '.' is not on a suitable file system for this test" 1>&2 + echo "$0: skipping this test" 1>&2 + (exit 77); exit 77 +fi + mkdir d || framework_failure=1 ln -s / d/s || framework_failure=1 chmod 600 d || framework_failure=1