]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: avoid a FP on aarch64 when comparing env/printenv output
authorBernhard Voelker <mail@bernhard-voelker.de>
Tue, 3 Feb 2015 00:52:04 +0000 (01:52 +0100)
committerBernhard Voelker <mail@bernhard-voelker.de>
Tue, 3 Feb 2015 01:19:54 +0000 (02:19 +0100)
The following test fails on aarch64 on openSUSE's OpenBuildService
due to glibc's execvp reversing the pointers of 'environ', i.e.,
the output of "env|tac" equals "env env" on that platform.

* tests/misc/printenv.sh: Use 'env env' to work around the behavior
on that platform.
While at it, fix the grep pattern which suppressed all environment
variables starting with an underscore "_" instead of "$_" (and
"$LD_PRELOAD") only.

tests/misc/printenv.sh

index 5c2f7c04c8ab6aabb614e590dc1b368d57fc56de..862b48ba805b0e5112901baea054887f031f8f19 100755 (executable)
@@ -23,8 +23,12 @@ print_ver_ printenv
 # printenv as a builtin, so we must invoke it via "env".
 # But beware of $_, set by many shells to the last command run.
 # Also, filter out LD_PRELOAD, which is set when running under valgrind.
-env | grep -Ev '^(_|LD_PRELOAD=)' > exp || framework_failure_
-env -- printenv | grep -Ev '^(_|LD_PRELOAD=)' > out || fail=1
+# Note the apparently redundant "env env": this is to ensure to get
+# env's output the same way as that of printenv and works around a bug
+# on aarch64 at least where libc's execvp reverses the order of the
+# output.
+env -- env | grep -Ev '^(_|LD_PRELOAD)=' > exp || framework_failure_
+env -- printenv | grep -Ev '^(_|LD_PRELOAD)=' > out || fail=1
 compare exp out || fail=1
 
 # POSIX is clear that environ may, but need not be, sorted.