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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user