bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Port readlink-fp-loop away from GNU/Linux


From: Paul Eggert
Subject: Port readlink-fp-loop away from GNU/Linux
Date: Fri, 16 Nov 2007 01:12:05 -0800
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)

The readlink-fp-loop test has some dependencies on GNU/Linux.  First
it relies on GNU/Linux's spelling of the ELOOP message.  Second, it
relies on the fact that "echo x > p/1" will succeed if p/1 is a
dangling symlink that requires more than 20 hops to resolve.  Solaris
rejects this with an ELOOP (properly, I think -- this sounds like a
Linux bug, but that's not for coreutils to fix).

Here is a patch.

2007-11-16  Paul Eggert  <address@hidden>

        Port readlink-fp-loop to Solaris.
        * tests/misc/readlink-fp-loop (symlink_loop_msg): New var,
        which records the symlink-loop message, whose wording is
        not standardized by Posix.  Do not rely on "echo x > p/1"
        to work when p/1 has a lot of indirect symlinks.  (I'm surprised
        that it works on Linux.  Perhaps a Linux bug?)

diff --git a/tests/misc/readlink-fp-loop b/tests/misc/readlink-fp-loop
index 9a4472b..ee65e28 100755
--- a/tests/misc/readlink-fp-loop
+++ b/tests/misc/readlink-fp-loop
@@ -45,8 +45,12 @@ compare out exp || fail=1
 # Construct a real loop and make sure readlink still detects it.
 ln -sf ../s/1 d/2 || framework_failure
 readlink -v -e p/1 2> out && fail=1
-echo readlink: p/1: Too many levels of symbolic links > exp || 
framework_failure
-compare out exp || fail=1
+readlink_msg=$(cat out)
+case $readlink_msg in
+  'readlink: p/1: '*) ;;
+  *) fail=1;;
+esac
+symlink_loop_msg=${readlink_msg#'readlink: p/1: '}

 # Exercise the hash table code.
 ln -nsf ../s/3 d/2 || framework_failure
@@ -55,7 +59,7 @@ ln -nsf ../p/5 d/4 || framework_failure
 ln -nsf ../p/6 d/5 || framework_failure
 ln -nsf ../p/7 d/6 || framework_failure
 ln -nsf ../p/8 d/7 || framework_failure
-echo x > p/1       || framework_failure
+echo x > d/8       || framework_failure
 readlink -v -e p/1 > out || fail=1
 echo "$cwd/d/8" > exp || fail=1
 compare out exp || fail=1
@@ -63,7 +67,7 @@ compare out exp || fail=1
 # A trivial loop
 ln -s loop loop
 readlink -v -e loop 2> out && fail=1
-echo readlink: loop: Too many levels of symbolic links > exp || 
framework_failure
+echo "readlink: loop: $symlink_loop_msg" > exp || framework_failure
 compare out exp || fail=1

 (exit $fail); exit $fail




reply via email to

[Prev in Thread] Current Thread [Next in Thread]