From 539564103604dc698e662948e033e52ce5a0aafd Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Wed, 2 Sep 2020 06:02:40 +0100 Subject: [PATCH] shtests: cd to each test set's temp dir before running An oops in tests/io.sh (re: c607c48c) wrote temporary files outside $tmp and into src/cmd/ksh93/tests. Let's fix this properly so it doesn't happen again. src/cmd/ksh93/tests/shtests: - Start each test set in its own temporary directory by default. src/cmd/ksh93/tests/*.sh: - Refuse to run if $tmp != $PWD. - Related cleanups. --- src/cmd/ksh93/tests/alias.sh | 2 +- src/cmd/ksh93/tests/append.sh | 2 +- src/cmd/ksh93/tests/arith.sh | 2 +- src/cmd/ksh93/tests/arrays.sh | 2 +- src/cmd/ksh93/tests/arrays2.sh | 2 +- src/cmd/ksh93/tests/attributes.sh | 2 +- src/cmd/ksh93/tests/basic.sh | 6 +----- src/cmd/ksh93/tests/bracket.sh | 2 +- src/cmd/ksh93/tests/builtins.sh | 2 +- src/cmd/ksh93/tests/case.sh | 2 +- src/cmd/ksh93/tests/comvar.sh | 2 +- src/cmd/ksh93/tests/comvario.sh | 2 +- src/cmd/ksh93/tests/coprocess.sh | 2 +- src/cmd/ksh93/tests/cubetype.sh | 2 +- src/cmd/ksh93/tests/enum.sh | 2 +- src/cmd/ksh93/tests/exit.sh | 4 ++-- src/cmd/ksh93/tests/expand.sh | 2 +- src/cmd/ksh93/tests/functions.sh | 2 +- src/cmd/ksh93/tests/glob.sh | 4 +--- src/cmd/ksh93/tests/grep.sh | 2 +- src/cmd/ksh93/tests/heredoc.sh | 2 +- src/cmd/ksh93/tests/io.sh | 8 +------- src/cmd/ksh93/tests/leaks.sh | 2 +- src/cmd/ksh93/tests/locale.sh | 3 +-- src/cmd/ksh93/tests/math.sh | 3 +-- src/cmd/ksh93/tests/nameref.sh | 2 +- src/cmd/ksh93/tests/namespace.sh | 2 +- src/cmd/ksh93/tests/options.sh | 11 +++-------- src/cmd/ksh93/tests/path.sh | 3 +-- src/cmd/ksh93/tests/pointtype.sh | 2 +- src/cmd/ksh93/tests/pty.sh | 2 +- src/cmd/ksh93/tests/quoting.sh | 2 +- src/cmd/ksh93/tests/quoting2.sh | 2 +- src/cmd/ksh93/tests/readcsv.sh | 2 +- src/cmd/ksh93/tests/recttype.sh | 2 +- src/cmd/ksh93/tests/restricted.sh | 4 +--- src/cmd/ksh93/tests/return.sh | 2 +- src/cmd/ksh93/tests/select.sh | 2 +- src/cmd/ksh93/tests/shtests | 10 +++++++--- src/cmd/ksh93/tests/sigchld.sh | 2 +- src/cmd/ksh93/tests/signal.sh | 3 +-- src/cmd/ksh93/tests/statics.sh | 2 +- src/cmd/ksh93/tests/subshell.sh | 2 +- src/cmd/ksh93/tests/substring.sh | 2 +- src/cmd/ksh93/tests/tilde.sh | 2 +- src/cmd/ksh93/tests/timetype.sh | 2 +- src/cmd/ksh93/tests/treemove.sh | 2 +- src/cmd/ksh93/tests/types.sh | 2 +- src/cmd/ksh93/tests/variables.sh | 8 ++++---- src/cmd/ksh93/tests/vartree1.sh | 2 +- src/cmd/ksh93/tests/vartree2.sh | 2 +- 51 files changed, 63 insertions(+), 82 deletions(-) diff --git a/src/cmd/ksh93/tests/alias.sh b/src/cmd/ksh93/tests/alias.sh index 7f850e705..afc5c010b 100755 --- a/src/cmd/ksh93/tests/alias.sh +++ b/src/cmd/ksh93/tests/alias.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } alias foo='print hello' if [[ $(foo) != hello ]] diff --git a/src/cmd/ksh93/tests/append.sh b/src/cmd/ksh93/tests/append.sh index 6617c36d2..7db618c43 100755 --- a/src/cmd/ksh93/tests/append.sh +++ b/src/cmd/ksh93/tests/append.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } { x=abc diff --git a/src/cmd/ksh93/tests/arith.sh b/src/cmd/ksh93/tests/arith.sh index 7327eaffd..146baa441 100755 --- a/src/cmd/ksh93/tests/arith.sh +++ b/src/cmd/ksh93/tests/arith.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } trap '' FPE # NOTE: osf.alpha requires this (no ieee math) diff --git a/src/cmd/ksh93/tests/arrays.sh b/src/cmd/ksh93/tests/arrays.sh index 463ecd930..864d32d77 100755 --- a/src/cmd/ksh93/tests/arrays.sh +++ b/src/cmd/ksh93/tests/arrays.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function fun { diff --git a/src/cmd/ksh93/tests/arrays2.sh b/src/cmd/ksh93/tests/arrays2.sh index 3d5ab530f..b9099c9f7 100755 --- a/src/cmd/ksh93/tests/arrays2.sh +++ b/src/cmd/ksh93/tests/arrays2.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } for ((i=0; i < 4; i++ )) do for ((j=0; j < 5; j++ )) diff --git a/src/cmd/ksh93/tests/attributes.sh b/src/cmd/ksh93/tests/attributes.sh index ee4feee1d..ab22e6431 100755 --- a/src/cmd/ksh93/tests/attributes.sh +++ b/src/cmd/ksh93/tests/attributes.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } r=readonly u=Uppercase l=Lowercase i=22 i8=10 L=abc L5=def uL5=abcdef xi=20 x=export t=tagged H=hostname LZ5=026 RZ5=026 Z5=123 lR5=ABcdef R5=def n=l diff --git a/src/cmd/ksh93/tests/basic.sh b/src/cmd/ksh93/tests/basic.sh index 05fd07c24..455efcfe2 100755 --- a/src/cmd/ksh93/tests/basic.sh +++ b/src/cmd/ksh93/tests/basic.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } bincat=$(whence -p cat) binecho=$(whence -p echo) @@ -66,9 +66,6 @@ umask u=rwx,go=rx || err_exit "umask u=rws,go=rx failed" if [[ $(umask -S) != u=rwx,g=rx,o=rx ]] then err_exit 'umask -S incorrect' fi -pwd=$PWD -[[ $SHELL != /* ]] && SHELL=$pwd/$SHELL -cd $tmp || { err_exit "cd $tmp failed"; exit 1; } um=$(umask -S) ( umask 0777; > foobar ) rm -f foobar @@ -235,7 +232,6 @@ if [[ $x != hello ]] then err_exit "command substitution with stdout closed failed" fi exec >& 9 -cd $pwd x=$(export binecho bincat; cat <<\! | $SHELL "$binecho" | "$bincat" "$binecho" hello diff --git a/src/cmd/ksh93/tests/bracket.sh b/src/cmd/ksh93/tests/bracket.sh index 994654627..e4dcbd7b8 100755 --- a/src/cmd/ksh93/tests/bracket.sh +++ b/src/cmd/ksh93/tests/bracket.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } null='' if [[ ! -z $null ]] diff --git a/src/cmd/ksh93/tests/builtins.sh b/src/cmd/ksh93/tests/builtins.sh index 07ad5d6fe..c53987452 100755 --- a/src/cmd/ksh93/tests/builtins.sh +++ b/src/cmd/ksh93/tests/builtins.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } bincat=$(whence -p cat) diff --git a/src/cmd/ksh93/tests/case.sh b/src/cmd/ksh93/tests/case.sh index 500fc6bc5..2ed08c1e3 100755 --- a/src/cmd/ksh93/tests/case.sh +++ b/src/cmd/ksh93/tests/case.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } bar=foo2 bam=foo[3] diff --git a/src/cmd/ksh93/tests/comvar.sh b/src/cmd/ksh93/tests/comvar.sh index 387cf1358..80da1cd46 100755 --- a/src/cmd/ksh93/tests/comvar.sh +++ b/src/cmd/ksh93/tests/comvar.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } #test for compound variables Command=${0##*/} diff --git a/src/cmd/ksh93/tests/comvario.sh b/src/cmd/ksh93/tests/comvario.sh index b4be1bd4d..24a2c28ec 100755 --- a/src/cmd/ksh93/tests/comvario.sh +++ b/src/cmd/ksh93/tests/comvario.sh @@ -49,7 +49,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } # "nounset" disabled for now #set -o nounset diff --git a/src/cmd/ksh93/tests/coprocess.sh b/src/cmd/ksh93/tests/coprocess.sh index f27363dd3..f8f2270ec 100755 --- a/src/cmd/ksh93/tests/coprocess.sh +++ b/src/cmd/ksh93/tests/coprocess.sh @@ -29,7 +29,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } if [[ -d /cygdrive ]] then err_exit cygwin detected - coprocess tests disabled - enable at the risk of wedging your system diff --git a/src/cmd/ksh93/tests/cubetype.sh b/src/cmd/ksh93/tests/cubetype.sh index e8a2282c7..c4eab976d 100755 --- a/src/cmd/ksh93/tests/cubetype.sh +++ b/src/cmd/ksh93/tests/cubetype.sh @@ -29,7 +29,7 @@ Command=${0##*/} integer Errors=0 integer n=2 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } typeset -T Box_t=( float -h 'height in inches' x=2 diff --git a/src/cmd/ksh93/tests/enum.sh b/src/cmd/ksh93/tests/enum.sh index 5487c37e7..0cd63d96e 100755 --- a/src/cmd/ksh93/tests/enum.sh +++ b/src/cmd/ksh93/tests/enum.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } enum Color_t=(red green blue orange yellow) enum -i Sex_t=(Male Female) diff --git a/src/cmd/ksh93/tests/exit.sh b/src/cmd/ksh93/tests/exit.sh index 166f2010c..a6ca0647e 100755 --- a/src/cmd/ksh93/tests/exit.sh +++ b/src/cmd/ksh93/tests/exit.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function abspath { @@ -41,7 +41,6 @@ function abspath #test for proper exit of shell builtin getconf ABSHELL=$(abspath) -cd $tmp || { err_exit "cd $tmp failed"; exit 1; } print exit 0 >.profile ${ABSHELL} </dev/null 2>&1 || err_exit 'ksh plugin exit failed -- was ksh built with CCFLAGS+=$(CC.EXPORT.DYNAMIC)?' diff --git a/src/cmd/ksh93/tests/expand.sh b/src/cmd/ksh93/tests/expand.sh index c568e457a..f653469c1 100755 --- a/src/cmd/ksh93/tests/expand.sh +++ b/src/cmd/ksh93/tests/expand.sh @@ -27,7 +27,7 @@ function err_exit integer Errors=0 Command=${0##*/} -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } # {...} expansion tests -- ignore if not supported diff --git a/src/cmd/ksh93/tests/functions.sh b/src/cmd/ksh93/tests/functions.sh index 7374b29c6..63f6450d4 100755 --- a/src/cmd/ksh93/tests/functions.sh +++ b/src/cmd/ksh93/tests/functions.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' integer Errors=0 Command=${0##*/} -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } compiled='' read -n4 c < $0 2> /dev/null diff --git a/src/cmd/ksh93/tests/glob.sh b/src/cmd/ksh93/tests/glob.sh index a42f468b3..9502dcb32 100755 --- a/src/cmd/ksh93/tests/glob.sh +++ b/src/cmd/ksh93/tests/glob.sh @@ -27,7 +27,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer aware=0 contrary=0 Errors=0 ignorant=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function test_glob { @@ -89,8 +89,6 @@ alias test_case='test_case $LINENO' unset undefined -cd $tmp || { err_exit "cd $tmp failed"; exit 1; } - export LC_COLLATE=C touch B b set -- * diff --git a/src/cmd/ksh93/tests/grep.sh b/src/cmd/ksh93/tests/grep.sh index c07b97813..f7afbcef3 100755 --- a/src/cmd/ksh93/tests/grep.sh +++ b/src/cmd/ksh93/tests/grep.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function grep { diff --git a/src/cmd/ksh93/tests/heredoc.sh b/src/cmd/ksh93/tests/heredoc.sh index d75443345..d6519f85c 100755 --- a/src/cmd/ksh93/tests/heredoc.sh +++ b/src/cmd/ksh93/tests/heredoc.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } bincat=$(whence -p cat) diff --git a/src/cmd/ksh93/tests/io.sh b/src/cmd/ksh93/tests/io.sh index 5aab5dc36..c5ce484c4 100755 --- a/src/cmd/ksh93/tests/io.sh +++ b/src/cmd/ksh93/tests/io.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } unset HISTFILE @@ -49,7 +49,6 @@ done exec 3> /dev/null [[ $(fun) == good ]] || err_exit 'file 3 closed before subshell completes' exec 3>&- -cd $tmp || { err_exit "cd $tmp failed"; exit ; } print foo > file1 print bar >> file1 if [[ $( '' ) 2> /dev/null && err_exit '> "" does not fail' unset x ( exec > ${x} ) 2> /dev/null && err_exit '> $x, where x null does not fail' @@ -542,13 +540,9 @@ actual=$( (redirect /dev/null/foo >$tmp/wrong_redirect) 2>&1; echo " status = $? # Process substitution # An output process substitution should work when combined with a redirection. -# The 'cd "$tmp"' is because in many versions of ksh the test creates a bizarre -# file that isn't easy to delete individually. -cd "$tmp" result=$("$SHELL" -c 'echo ok > >(sed s/ok/good/); wait') [[ $result == good ]] || err_exit 'process substitution does not work with redirections' \ "(expected 'good', got $(printf %q "$result"))" -cd - >/dev/null # Process substitution in an interactive shell shouldn't print the # process ID of the asynchronous process. diff --git a/src/cmd/ksh93/tests/leaks.sh b/src/cmd/ksh93/tests/leaks.sh index 7cb4cb74c..38e0652e1 100755 --- a/src/cmd/ksh93/tests/leaks.sh +++ b/src/cmd/ksh93/tests/leaks.sh @@ -29,7 +29,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } builtin vmstate 2>/dev/null || { err\_exit "$LINENO" 'vmstate built-in command not compiled in; skipping tests'; exit 0; } # Get the current amount of memory usage diff --git a/src/cmd/ksh93/tests/locale.sh b/src/cmd/ksh93/tests/locale.sh index cc9c6fdef..4cc2d9e4e 100755 --- a/src/cmd/ksh93/tests/locale.sh +++ b/src/cmd/ksh93/tests/locale.sh @@ -28,8 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } -CDPATH= cd -P -- "$tmp" || exit +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } unset LANG ${!LC_*} diff --git a/src/cmd/ksh93/tests/math.sh b/src/cmd/ksh93/tests/math.sh index 4c34d14e2..d29d6d6a6 100755 --- a/src/cmd/ksh93/tests/math.sh +++ b/src/cmd/ksh93/tests/math.sh @@ -28,8 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } -CDPATH= cd -P -- "$tmp" || exit +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } set -o nounset diff --git a/src/cmd/ksh93/tests/nameref.sh b/src/cmd/ksh93/tests/nameref.sh index 36d4ef914..8cb4e51c7 100755 --- a/src/cmd/ksh93/tests/nameref.sh +++ b/src/cmd/ksh93/tests/nameref.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function checkref { diff --git a/src/cmd/ksh93/tests/namespace.sh b/src/cmd/ksh93/tests/namespace.sh index 99b6843bb..7848b2b5f 100755 --- a/src/cmd/ksh93/tests/namespace.sh +++ b/src/cmd/ksh93/tests/namespace.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } foo=abc typeset -C bar=(x=3 y=4 t=7) diff --git a/src/cmd/ksh93/tests/options.sh b/src/cmd/ksh93/tests/options.sh index bd15e56b4..666f327a2 100755 --- a/src/cmd/ksh93/tests/options.sh +++ b/src/cmd/ksh93/tests/options.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } unset HISTFILE export LC_ALL=C ENV=/./dev/null @@ -139,8 +139,7 @@ fi rm -rf $tmp/.kshrc if command set -G 2> /dev/null -then cd $tmp - mkdir bar foo +then mkdir bar foo > bar.c > bam.c > bar/foo.c > bar/bam.c > foo/bam.c @@ -160,10 +159,8 @@ then cd $tmp expected='bam.c bar/bam.c foo/bam.c' [[ $* == $expected ]] || err_exit "-G **/bam.c failed -- expected '$expected', got '$*'" - cd ~- fi -cd $tmp t="<$$>.profile.<$$>" echo "echo '$t'" > .profile cp $SHELL ./-ksh @@ -201,8 +198,7 @@ else [[ $(HOME=$PWD ./-ksh -ip &1) == *$t* ]] && err_exit './-ksh -p does not ignore .profile' fi -cd ~- -rm -rf $tmp/.profile +rm .profile # { exec interactive login_shell restricted xtrace } in the following test @@ -441,7 +437,6 @@ PAR=( CMD=( command-kill script-kill ) ADD=( '' '; :' ) -cd $tmp print $'#!'$SHELL$'\nkill -KILL $$' > command-kill print $'kill -KILL $$' > script-kill chmod +x command-kill script-kill diff --git a/src/cmd/ksh93/tests/path.sh b/src/cmd/ksh93/tests/path.sh index a2b0c6920..1857d40a6 100755 --- a/src/cmd/ksh93/tests/path.sh +++ b/src/cmd/ksh93/tests/path.sh @@ -28,8 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } -CDPATH= cd -P -- "$tmp" || exit +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } type /xxxxxx > out1 2> out2 [[ -s out1 ]] && err_exit 'type should not write on stdout for not found case' diff --git a/src/cmd/ksh93/tests/pointtype.sh b/src/cmd/ksh93/tests/pointtype.sh index dad634f12..0b8c2f032 100755 --- a/src/cmd/ksh93/tests/pointtype.sh +++ b/src/cmd/ksh93/tests/pointtype.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } typeset -T Pt_t=( float x=1 diff --git a/src/cmd/ksh93/tests/pty.sh b/src/cmd/ksh93/tests/pty.sh index c8abcda3d..344315e62 100755 --- a/src/cmd/ksh93/tests/pty.sh +++ b/src/cmd/ksh93/tests/pty.sh @@ -41,7 +41,7 @@ alias err_exit='err_exit $lineno' Command=${0##*/} integer Errors=0 lineno=1 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } whence -q pty || { err\_exit "$LINENO" "pty command not found -- tests skipped"; exit 0; } # On FreeBSD, the stty command does not appear to work correctly on a pty pseudoterminal. diff --git a/src/cmd/ksh93/tests/quoting.sh b/src/cmd/ksh93/tests/quoting.sh index c1651df9f..089838742 100755 --- a/src/cmd/ksh93/tests/quoting.sh +++ b/src/cmd/ksh93/tests/quoting.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } binecho=$(whence -p echo) diff --git a/src/cmd/ksh93/tests/quoting2.sh b/src/cmd/ksh93/tests/quoting2.sh index a2b808af8..8f11ea490 100755 --- a/src/cmd/ksh93/tests/quoting2.sh +++ b/src/cmd/ksh93/tests/quoting2.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } set -o noglob if [[ 'hi there' != "hi there" ]] diff --git a/src/cmd/ksh93/tests/readcsv.sh b/src/cmd/ksh93/tests/readcsv.sh index a01e782bc..77bedcb67 100755 --- a/src/cmd/ksh93/tests/readcsv.sh +++ b/src/cmd/ksh93/tests/readcsv.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } tmp1=$tmp/tmp1.csv tmp2=$tmp/tmp2.csv diff --git a/src/cmd/ksh93/tests/recttype.sh b/src/cmd/ksh93/tests/recttype.sh index e62a7171c..dad3e093f 100755 --- a/src/cmd/ksh93/tests/recttype.sh +++ b/src/cmd/ksh93/tests/recttype.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } typeset -T Pt_t=( float x=1 diff --git a/src/cmd/ksh93/tests/restricted.sh b/src/cmd/ksh93/tests/restricted.sh index b77ecdbea..f1eae3614 100755 --- a/src/cmd/ksh93/tests/restricted.sh +++ b/src/cmd/ksh93/tests/restricted.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } binecho=$(whence -p echo) @@ -46,8 +46,6 @@ function check_restricted grep restricted out > /dev/null 2>&1 } -[[ $SHELL != /* ]] && SHELL=$pwd/$SHELL -cd $tmp || err_exit "cd $tmp failed" ln -s $SHELL rksh PATH=$PWD:$PATH rksh -c '[[ -o restricted ]]' || err_exit 'restricted option not set' diff --git a/src/cmd/ksh93/tests/return.sh b/src/cmd/ksh93/tests/return.sh index b492409db..2d0afdc16 100755 --- a/src/cmd/ksh93/tests/return.sh +++ b/src/cmd/ksh93/tests/return.sh @@ -30,7 +30,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } unset HISTFILE diff --git a/src/cmd/ksh93/tests/select.sh b/src/cmd/ksh93/tests/select.sh index 01051b9bf..487e7e4a9 100755 --- a/src/cmd/ksh93/tests/select.sh +++ b/src/cmd/ksh93/tests/select.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } PS3='ABC ' diff --git a/src/cmd/ksh93/tests/shtests b/src/cmd/ksh93/tests/shtests index 61d44c758..96e5f577a 100755 --- a/src/cmd/ksh93/tests/shtests +++ b/src/cmd/ksh93/tests/shtests @@ -10,7 +10,7 @@ valgrindflags='--xml=yes --log-file=/dev/null --track-origins=yes --read-var-inf USAGE=$' [-s8? -@(#)$Id: shtests (AT&T Research/ksh93) 2020-08-11 $ +@(#)$Id: shtests (AT&T Research/ksh93) 2020-09-02 $ ] '$USAGE_LICENSE$' [+NAME?shtests - ksh regression test harness] @@ -355,6 +355,7 @@ do [[ $i == *.sh ]] || i+='.sh' do o=$u tmp_s=$tmp/$u.$lang mkdir -m700 "$tmp_s" || exit + cd "$tmp_s" || exit if [[ $lang == C ]] then lang= else o="$o($lang)" @@ -363,9 +364,10 @@ do [[ $i == *.sh ]] || i+='.sh' echo test $o begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} ( export ${lang:+"$lang"} "tmp=$tmp_s" - $valgrind $SHELL $trace $i + $valgrind $SHELL $trace "$OLDPWD/$i" ) e=$? + cd "$OLDPWD" || exit if (( !keep )) then rm -rf "$tmp_s" fi @@ -395,7 +397,8 @@ do [[ $i == *.sh ]] || i+='.sh' echo test $o begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} tmp_s=$tmp/$u.shcomp mkdir -m700 "$tmp_s" || exit - if $SHCOMP $i > $c + cd "$tmp_s" || exit + if $SHCOMP "$OLDPWD/$i" > $c then if tmp=$tmp_s $valgrind $SHELL $trace $c then echo test $o passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 errors ]" else e=$? @@ -415,6 +418,7 @@ do [[ $i == *.sh ]] || i+='.sh' (( ++total_e )) echo test $o failed to compile ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ 1 test 1 error ]" fi + cd "$OLDPWD" || exit if (( !keep )) then rm -rf "$tmp_s" "$c" fi diff --git a/src/cmd/ksh93/tests/sigchld.sh b/src/cmd/ksh93/tests/sigchld.sh index 3cd9e804e..78a85cc9e 100755 --- a/src/cmd/ksh93/tests/sigchld.sh +++ b/src/cmd/ksh93/tests/sigchld.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } float DELAY=${1:-0.02} integer FOREGROUND=10 BACKGROUND=2 diff --git a/src/cmd/ksh93/tests/signal.sh b/src/cmd/ksh93/tests/signal.sh index af484c8ca..791911c62 100755 --- a/src/cmd/ksh93/tests/signal.sh +++ b/src/cmd/ksh93/tests/signal.sh @@ -28,8 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } -CDPATH= cd -P -- "$tmp" || exit +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } unset n s t typeset -A SIG diff --git a/src/cmd/ksh93/tests/statics.sh b/src/cmd/ksh93/tests/statics.sh index b3e989b56..c1b44ceb0 100755 --- a/src/cmd/ksh93/tests/statics.sh +++ b/src/cmd/ksh93/tests/statics.sh @@ -32,7 +32,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } set -o nounset diff --git a/src/cmd/ksh93/tests/subshell.sh b/src/cmd/ksh93/tests/subshell.sh index eee9c2087..66cbf3274 100755 --- a/src/cmd/ksh93/tests/subshell.sh +++ b/src/cmd/ksh93/tests/subshell.sh @@ -29,7 +29,7 @@ Command=${0##*/} integer Errors=0 typeset -F SECONDS # for fractional seconds in PS4 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } builtin getconf bincat=$(PATH=$(getconf PATH) whence -p cat) diff --git a/src/cmd/ksh93/tests/substring.sh b/src/cmd/ksh93/tests/substring.sh index e4b970ff3..19a0099d2 100755 --- a/src/cmd/ksh93/tests/substring.sh +++ b/src/cmd/ksh93/tests/substring.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } tmpPS4='+ [temp_PS4|L$LINENO|e$?] ' # used to avoid interference to ${.sh.match} from $PS4 set by shtests diff --git a/src/cmd/ksh93/tests/tilde.sh b/src/cmd/ksh93/tests/tilde.sh index affb117cd..9e50b27d1 100755 --- a/src/cmd/ksh93/tests/tilde.sh +++ b/src/cmd/ksh93/tests/tilde.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } if $SHELL -c '[[ ~root == /* ]]' then x=$(print -r -- ~root) diff --git a/src/cmd/ksh93/tests/timetype.sh b/src/cmd/ksh93/tests/timetype.sh index d8a58f356..ac3ac6f7d 100755 --- a/src/cmd/ksh93/tests/timetype.sh +++ b/src/cmd/ksh93/tests/timetype.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } typeset -T Time_t=( integer .=-1 diff --git a/src/cmd/ksh93/tests/treemove.sh b/src/cmd/ksh93/tests/treemove.sh index f5ef434f9..0aa5774f7 100755 --- a/src/cmd/ksh93/tests/treemove.sh +++ b/src/cmd/ksh93/tests/treemove.sh @@ -64,7 +64,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } ## test start typeset -C tree1 tree2 diff --git a/src/cmd/ksh93/tests/types.sh b/src/cmd/ksh93/tests/types.sh index c2a6994b9..1a7fa16ff 100755 --- a/src/cmd/ksh93/tests/types.sh +++ b/src/cmd/ksh93/tests/types.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } integer n=2 diff --git a/src/cmd/ksh93/tests/variables.sh b/src/cmd/ksh93/tests/variables.sh index e500adf22..0eb918db9 100755 --- a/src/cmd/ksh93/tests/variables.sh +++ b/src/cmd/ksh93/tests/variables.sh @@ -28,7 +28,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } [[ ${.sh.version} == "$KSH_VERSION" ]] || err_exit '.sh.version != KSH_VERSION' unset ss @@ -74,7 +74,7 @@ cd / if [[ $OLDPWD != $old ]] then err_exit "OLDPWD variable failed -- expected '$old', got '$OLDPWD'" fi -cd $old || err_exit cd failed +cd "$old" || err_exit cd failed # REPLY read <<-! foobar @@ -220,6 +220,7 @@ done kill -s 0 $! || err_exit '$! does not point to latest asynchronous process' kill $! unset x +cd /tmp || exit CDPATH=/ x=$(cd ${tmp#/}) if [[ $x != $tmp ]] @@ -234,6 +235,7 @@ x=$(cd ${tmp#/}) if [[ $x != $tmp ]] then err_exit "CDPATH ${tmp#/} does not display new directory" fi +cd "$tmp" || exit TMOUT=100 (TMOUT=20) if (( TMOUT !=100 )) @@ -750,8 +752,6 @@ set -- ) Errors=$? # ensure error count survives subshell -cd $tmp - print print -n zzz > zzz chmod +x zzz exp='aaazzz' diff --git a/src/cmd/ksh93/tests/vartree1.sh b/src/cmd/ksh93/tests/vartree1.sh index 61d130973..09c8f874a 100755 --- a/src/cmd/ksh93/tests/vartree1.sh +++ b/src/cmd/ksh93/tests/vartree1.sh @@ -35,7 +35,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } function build_tree { diff --git a/src/cmd/ksh93/tests/vartree2.sh b/src/cmd/ksh93/tests/vartree2.sh index b4c37cc58..df46d8b41 100755 --- a/src/cmd/ksh93/tests/vartree2.sh +++ b/src/cmd/ksh93/tests/vartree2.sh @@ -35,7 +35,7 @@ alias err_exit='err_exit $LINENO' Command=${0##*/} integer Errors=0 -[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } +[[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } # "built_tree1" and "built_tree2" are identical except the way how they test # whether a variable exists: