1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-13 19:52:20 +00:00

Regression test suite: get rid of unportable 'mktemp -dt'

The regression test suite used 'mktemp -dt' to create temporary
directories, but that is not portable, e.g. it does not work on
macOS, FreebSD or NetBSD. Installing a compatible 'mktemp' in
another location in $PATH did not work either, as the regression
test suite resets $PATH.

src/cmd/ksh93/tests/*:
- Replace many uses of 'mktemp -dt' by a portable and reasonably
  safe way to create a temporary directory.

(cherry picked from commit 71f4c43703e3eff034009b4c8f4110bd32f4e209)
This commit is contained in:
Martijn Dekker 2020-05-14 17:55:47 +01:00
parent 2e7602da2a
commit 2318de328a
31 changed files with 258 additions and 65 deletions

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.alias.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
alias foo='print hello'
if [[ $(foo) != hello ]]

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.arith.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
trap '' FPE # NOTE: osf.alpha requires this (no ieee math)

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.arrays.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
function fun
{

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.attributes.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
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

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.basic.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
# test basic file operations like redirection, pipes, file expansion
set -- \

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.bracket.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
null=''
if [[ ! -z $null ]]

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.builtins.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
# test shell builtin commands
builtin getconf
@ -187,7 +193,7 @@ mkdir -p $tmp/a/b/c 2>/dev/null || err_exit "mkdir -p failed"
$SHELL -c "cd $tmp/a/b; cd c" 2>/dev/null || err_exit "initial script relative cd fails"
trap 'print TERM' TERM
exp=$'trap -- \'print TERM\' TERM\ntrap -- \'cd /; rm -rf '$tmp$'\' EXIT'
exp=$'trap -- \'print TERM\' TERM\ntrap -- \'cd / && rm -rf "$tmp"\' EXIT'
got=$(trap)
[[ $got == $exp ]] || err_exit "\$(trap) failed -- expected \"$exp\", got \"$got\""
exp='print TERM'

View file

@ -29,8 +29,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.coprocess.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
if [[ -d /cygdrive ]]
then err_exit cygwin detected - coprocess tests disabled - enable at the risk of wedging your system

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.exit.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
function abspath
{

View file

@ -33,8 +33,14 @@ read -n4 c < $0 2> /dev/null
ulimit -c 0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.functions.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
integer foo=33
bar=bye

View file

@ -27,8 +27,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer aware=0 contrary=0 Errors=0 ignorant=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.glob.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
function test_glob
{

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.grep.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
function grep
{

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.heredoc.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
f=$tmp/here1
g=$tmp/here2

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.io.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
unset HISTFILE

View file

@ -30,8 +30,14 @@ integer Errors=0
unset LANG ${!LC_*}
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.locale.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
cd $tmp || exit
a=$($SHELL -c '/' 2>&1 | sed -e "s,.*: *,," -e "s, *\[.*,,")

View file

@ -34,8 +34,14 @@ set -o nounset
typeset tmp
# create temporary test directory
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.math.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
cd $tmp || exit
function test_arithmetric_expression_accesss_array_element_through_nameref

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.nameref.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
function checkref
{

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.namespace.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
foo=abc
typeset -C bar=(x=3 y=4 t=7)

View file

@ -33,8 +33,14 @@ export LC_ALL=C ENV=
ulimit -c 0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.options.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
if [[ $( ${SHELL-ksh} -s hello<<-\!
print $1

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.path.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
cd $tmp || exit
type /xxxxxx > out1 2> out2

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.readcsv.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
tmp1=$tmp/tmp1.csv
tmp2=$tmp/tmp2.csv

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.restricted.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
# test restricted shell
pwd=$PWD

View file

@ -30,8 +30,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.return.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
unset HISTFILE

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.select.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
PS3='ABC '

View file

@ -275,8 +275,14 @@ then s=${SHELL:##*sh}
fi
if (( compile ))
then if whence $SHCOMP > /dev/null
then tmp=$(mktemp -dt) || { echo mktemp -dt failed >&2; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
then tmp=$(
d=${TMPDIR:-/tmp}/ksh93.shtests.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
echo 'mkdir failed' >&2
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
elif (( compile > 1 ))
then echo $0: --compile: $SHCOMP not found >&2
exit 1
@ -288,8 +294,14 @@ then if [[ -x $SHELL-g ]]
then SHELL=$SHELL-g
fi
if [[ ! $tmp ]]
then tmp=$(mktemp -dt) || { echo mktemp -dt failed >&2; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
then tmp=$(
d=${TMPDIR:-/tmp}/ksh93.shtests.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
echo 'mkdir failed' >&2
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
fi
valxml=$tmp/valgrind.xml
valgrind+=" --xml-file=$valxml"

View file

@ -29,6 +29,15 @@ alias err_exit='err_exit $LINENO'
float DELAY=${1:-0.2}
integer FOREGROUND=10 BACKGROUND=2 Errors=0
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.sigchld.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
s=$($SHELL -c '
integer i foreground=0 background=0
float delay='$DELAY' d=0 s=0
@ -146,8 +155,6 @@ done
(( d==2000 )) || err_exit "trap '' CHLD causes side effects d=$d"
trap - CHLD
tmp=$(mktemp -dt)
trap 'rm -rf $tmp' EXIT
x=$($SHELL 2> /dev/null -ic '/bin/notfound; sleep .5 & sleep 1;jobs')
[[ $x == *Done* ]] || err_exit 'SIGCHLD blocked after notfound'
x=$($SHELL 2> /dev/null -ic 'kill -0 12345678901234567876; sleep .5 & sleep 1;jobs')

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.signal.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
cd $tmp || err_exit "cd $tmp failed"

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0 Error_fd=2
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.subshell.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
builtin getconf
bincat=$(PATH=$(getconf PATH) whence -p cat)

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.tilde.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
if $SHELL -c '[[ ~root == /* ]]'
then x=$(print -r -- ~root)

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.types.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
integer n=2

View file

@ -28,8 +28,14 @@ alias err_exit='err_exit $LINENO'
Command=${0##*/}
integer Errors=0
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
tmp=$(
d=${TMPDIR:-/tmp}/ksh93.variables.$$.${RANDOM:-0}
mkdir -m700 -- "$d" && CDPATH= cd -P -- "$d" && pwd
) || {
err_exit 'mkdir failed'
exit 1
}
trap 'cd / && rm -rf "$tmp"' EXIT
[[ ${.sh.version} == "$KSH_VERSION" ]] || err_exit '.sh.version != KSH_VERSION'
unset ss