1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-02-17 04:41:59 +02:00

tests: avoid test failures when PATH contains an unsearchable directory

* tests/test-lib.sh (sanitize_path_): New function.
Always call it.
This commit is contained in:
Jim Meyering
2009-11-23 17:35:20 +01:00
parent 9cf9f8e1e0
commit ab6b27eba7

View File

@@ -23,6 +23,31 @@ if test $? != 11; then
Exit 77
fi
# Having an unsearchable directory in PATH causes execve to fail with EACCES
# when applied to an unresolvable program name, contrary to the desired ENOENT.
# Avoid the problem by rewriting PATH to exclude unsearchable directories.
sanitize_path_()
{
local saved_IFS=$IFS
IFS=:
set - $PATH
IFS=$saved_IFS
local d d1
local colon=
local new_path=
for d in "$@"; do
test -z "$d" && d1=. || d1=$d
if ls -d "$d1/." > /dev/null 2>&1; then
new_path="$new_path$colon$d"
colon=':'
fi
done
PATH=$new_path
export PATH
}
skip_test_()
{
echo "$0: skipping test: $@" | head -1 1>&9
@@ -54,7 +79,6 @@ require_selinux_enforcing_()
|| skip_test_ "This test is useful only with SELinux in Enforcing mode."
}
require_openat_support_()
{
# Skip this test if your system has neither the openat-style functions
@@ -396,5 +420,7 @@ else
compare() { cmp "$@"; }
fi
sanitize_path_
# Initialize; all bourne shell scripts end with "Exit $fail".
fail=0