summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-10-05 22:10:08 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-10-05 22:10:08 +0000
commit08984eef49d4a05beebcce00ebd58caf8bbf5d7a (patch)
treec27384c33249963f197f3244cef85ea6c472afad /tests
parent1fa3b5014035f324ddec26576c0283d00bfbbbef (diff)
downloadcoreutils-08984eef49d4a05beebcce00ebd58caf8bbf5d7a.tar.xz
* tests/ls/stat-dtype: Use a dynamic test to decide whether the
current file system has useful d_type info.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/ls/stat-dtype38
1 files changed, 11 insertions, 27 deletions
diff --git a/tests/ls/stat-dtype b/tests/ls/stat-dtype
index 153195cd3..3f509a2d9 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