mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	regress tests: remove use of unportable direct paths to commands
Many tests used direct paths to some commands, mostly /bin/echo and /bin/cat. This is unportable (breaks on e.g. NixOS). The correct way is to obtain the direct path using 'whence -p'. There was also one use of '/usr/bin/pstack' in tests/comvario.sh that seemed bogus. Apparently this was supposed to analyse a core file after a crash. Even on Solaris and Linux, where that command exists, the argument is documented to be a PID, not a core file. If this ever worked anywhere, then it was system-specific enough to be useless here, so I've removed it. (cherry picked from commit 4563b8bc651cd9cb18dc73f56a041f7ac5534395)
This commit is contained in:
		
							parent
							
								
									3552a2bafd
								
							
						
					
					
						commit
						b6b8b522a7
					
				
					 13 changed files with 53 additions and 48 deletions
				
			
		| 
						 | 
				
			
			@ -36,6 +36,8 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
bincat=$(whence -p cat)
 | 
			
		||||
binecho=$(whence -p echo)
 | 
			
		||||
 | 
			
		||||
# test basic file operations like redirection, pipes, file expansion
 | 
			
		||||
set -- \
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +157,7 @@ then	err_exit "$foobar is not foobar"
 | 
			
		|||
fi
 | 
			
		||||
{
 | 
			
		||||
	print foo
 | 
			
		||||
	/bin/echo bar
 | 
			
		||||
	"$binecho" bar
 | 
			
		||||
	print bam
 | 
			
		||||
} > $tmp/foobar
 | 
			
		||||
if	[[ $( < $tmp/foobar) != $'foo\nbar\nbam' ]]
 | 
			
		||||
| 
						 | 
				
			
			@ -163,17 +165,17 @@ then	err_exit "output file pointer not shared correctly"
 | 
			
		|||
fi
 | 
			
		||||
cat > $tmp/foobar <<\!
 | 
			
		||||
	print foo
 | 
			
		||||
	/bin/echo bar
 | 
			
		||||
	"$binecho" bar
 | 
			
		||||
	print bam
 | 
			
		||||
!
 | 
			
		||||
chmod +x $tmp/foobar
 | 
			
		||||
if	[[ $($tmp/foobar) != $'foo\nbar\nbam' ]]
 | 
			
		||||
if	[[ $(export binecho; $tmp/foobar) != $'foo\nbar\nbam' ]]
 | 
			
		||||
then	err_exit "script not working"
 | 
			
		||||
fi
 | 
			
		||||
if	[[ $($tmp/foobar | /bin/cat) != $'foo\nbar\nbam' ]]
 | 
			
		||||
if	[[ $(export binecho; $tmp/foobar | "$bincat") != $'foo\nbar\nbam' ]]
 | 
			
		||||
then	err_exit "script | cat not working"
 | 
			
		||||
fi
 | 
			
		||||
if	[[ $( $tmp/foobar) != $'foo\nbar\nbam' ]]
 | 
			
		||||
if	[[ $(export binecho; $tmp/foobar) != $'foo\nbar\nbam' ]]
 | 
			
		||||
then	err_exit "output file pointer not shared correctly"
 | 
			
		||||
fi
 | 
			
		||||
rm -f $tmp/foobar
 | 
			
		||||
| 
						 | 
				
			
			@ -181,13 +183,13 @@ x=$( (print foo) ; (print bar) )
 | 
			
		|||
if	[[ $x != $'foo\nbar' ]]
 | 
			
		||||
then	err_exit " ( (print foo);(print bar ) failed"
 | 
			
		||||
fi
 | 
			
		||||
x=$( (/bin/echo foo) ; (print bar) )
 | 
			
		||||
x=$( ("$binecho" foo) ; (print bar) )
 | 
			
		||||
if	[[ $x != $'foo\nbar' ]]
 | 
			
		||||
then	err_exit " ( (/bin/echo);(print bar ) failed"
 | 
			
		||||
then	err_exit " ( ("$binecho");(print bar ) failed"
 | 
			
		||||
fi
 | 
			
		||||
x=$( (/bin/echo foo) ; (/bin/echo bar) )
 | 
			
		||||
x=$( ("$binecho" foo) ; ("$binecho" bar) )
 | 
			
		||||
if	[[ $x != $'foo\nbar' ]]
 | 
			
		||||
then	err_exit " ( (/bin/echo);(/bin/echo bar ) failed"
 | 
			
		||||
then	err_exit " ( ("$binecho");("$binecho" bar ) failed"
 | 
			
		||||
fi
 | 
			
		||||
cat > $tmp/script <<\!
 | 
			
		||||
if	[[ -p /dev/fd/0 ]]
 | 
			
		||||
| 
						 | 
				
			
			@ -221,7 +223,7 @@ if	[[ $x != "hello there" ]]
 | 
			
		|||
then	err_exit "scripts in subshells fail"
 | 
			
		||||
fi
 | 
			
		||||
cd ~- || err_exit "cd back failed"
 | 
			
		||||
x=$( (/bin/echo foo) 2> /dev/null )
 | 
			
		||||
x=$( ("$binecho" foo) 2> /dev/null )
 | 
			
		||||
if	[[ $x != foo ]]
 | 
			
		||||
then	err_exit "subshell in command substitution fails"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -233,15 +235,15 @@ then	err_exit "command substitution with stdout closed failed"
 | 
			
		|||
fi
 | 
			
		||||
exec >& 9
 | 
			
		||||
cd $pwd
 | 
			
		||||
x=$(cat <<\! | $SHELL
 | 
			
		||||
/bin/echo | /bin/cat
 | 
			
		||||
/bin/echo hello
 | 
			
		||||
x=$(export binecho bincat; cat <<\! | $SHELL
 | 
			
		||||
"$binecho" | "$bincat"
 | 
			
		||||
"$binecho" hello
 | 
			
		||||
!
 | 
			
		||||
)
 | 
			
		||||
if	[[ $x != $'\n'hello ]]
 | 
			
		||||
then	err_exit "$SHELL not working when standard input is a pipe"
 | 
			
		||||
fi
 | 
			
		||||
x=$( (/bin/echo hello) 2> /dev/null )
 | 
			
		||||
x=$( ("$binecho" hello) 2> /dev/null )
 | 
			
		||||
if	[[ $x != hello ]]
 | 
			
		||||
then	err_exit "subshell in command substitution with 1 closed fails"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -265,22 +267,22 @@ fi
 | 
			
		|||
trap - INT
 | 
			
		||||
cat > $tmp/script <<- \!
 | 
			
		||||
read line
 | 
			
		||||
/bin/cat
 | 
			
		||||
"$bincat"
 | 
			
		||||
!
 | 
			
		||||
if	[[ $($SHELL $tmp/script <<!
 | 
			
		||||
if	[[ $(export bincat; $SHELL $tmp/script <<!
 | 
			
		||||
one
 | 
			
		||||
two
 | 
			
		||||
!
 | 
			
		||||
)	!= two ]]
 | 
			
		||||
then	err_exit "standard input not positioned correctly"
 | 
			
		||||
fi
 | 
			
		||||
word=$(print $'foo\nbar' | { read line; /bin/cat;})
 | 
			
		||||
word=$(print $'foo\nbar' | { read line; "$bincat";})
 | 
			
		||||
if	[[ $word != bar ]]
 | 
			
		||||
then	err_exit "pipe to { read line; /bin/cat;} not working"
 | 
			
		||||
then	err_exit "pipe to { read line; $bincat;} not working"
 | 
			
		||||
fi
 | 
			
		||||
word=$(print $'foo\nbar' | ( read line; /bin/cat) )
 | 
			
		||||
word=$(print $'foo\nbar' | ( read line; "$bincat") )
 | 
			
		||||
if	[[ $word != bar ]]
 | 
			
		||||
then	err_exit "pipe to ( read line; /bin/cat) not working"
 | 
			
		||||
then	err_exit "pipe to ( read line; $bincat) not working"
 | 
			
		||||
fi
 | 
			
		||||
if	[[ $(print x{a,b}y) != 'xay xby' ]]
 | 
			
		||||
then	err_exit 'brace expansion not working'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
bincat=$(whence -p cat)
 | 
			
		||||
 | 
			
		||||
# test shell builtin commands
 | 
			
		||||
builtin getconf
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +102,7 @@ hello \
 | 
			
		|||
!
 | 
			
		||||
[[ $REPLY == 'hello 	world' ]] || err_exit "read continuation2 failed"
 | 
			
		||||
print "one\ntwo" | { read line
 | 
			
		||||
	print $line | /bin/cat > /dev/null
 | 
			
		||||
	print $line | "$bincat" > /dev/null
 | 
			
		||||
	read line
 | 
			
		||||
}
 | 
			
		||||
read <<\!
 | 
			
		||||
| 
						 | 
				
			
			@ -559,6 +560,7 @@ builtin cat
 | 
			
		|||
out=$tmp/seq.out
 | 
			
		||||
for ((i=1; i<=11; i++)); do print "$i"; done >$out
 | 
			
		||||
cmp -s <(print -- "$($bincat<( $bincat $out ) )") <(print -- "$(cat <( cat $out ) )") || err_exit "builtin cat differs from $bincat"
 | 
			
		||||
builtin -d cat
 | 
			
		||||
 | 
			
		||||
[[ $($SHELL -c '{ printf %R "["; print ok;}' 2> /dev/null) == ok ]] || err_exit $'\'printf %R "["\' causes shell to abort'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -529,11 +529,6 @@ print -v c2
 | 
			
		|||
        [[ "${out.stdout}" != '' ]] || err_exit "$0: Expected nonempty stdout."
 | 
			
		||||
       	[[ "${out.stderr}" == '' ]] || err_exit "$0: Expected empty stderr, got $(printf '%q\n' "${out.stderr}")"
 | 
			
		||||
 | 
			
		||||
	if [[ -f 'core' && -x '/usr/bin/pstack' ]] ; then
 | 
			
		||||
		pstack 'core'
 | 
			
		||||
		rm 'core'
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
binecho=$(whence -p echo)
 | 
			
		||||
 | 
			
		||||
integer foo=33
 | 
			
		||||
bar=bye
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +142,7 @@ fi
 | 
			
		|||
if	[[ $PWD != "$dir" ]]
 | 
			
		||||
then	err_exit 'cd inside nested subshell changes $PWD'
 | 
			
		||||
fi
 | 
			
		||||
fun() /bin/echo hello
 | 
			
		||||
fun() "$binecho" hello
 | 
			
		||||
if	[[ $(fun) != hello ]]
 | 
			
		||||
then	err_exit one line functions not working
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,7 +105,7 @@ case $* in
 | 
			
		|||
'b B')	contrary=1 ;;
 | 
			
		||||
b|B)	ignorant=1 ;;
 | 
			
		||||
esac
 | 
			
		||||
set -- $(LC_ALL=C /bin/sh -c 'echo [a-c]')
 | 
			
		||||
set -- $(LC_ALL=C sh -c 'echo [a-c]')
 | 
			
		||||
case $* in
 | 
			
		||||
B)	aware=1 ;;
 | 
			
		||||
esac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
bincat=$(whence -p cat)
 | 
			
		||||
 | 
			
		||||
f=$tmp/here1
 | 
			
		||||
g=$tmp/here2
 | 
			
		||||
| 
						 | 
				
			
			@ -125,7 +126,7 @@ done
 | 
			
		|||
} > $f
 | 
			
		||||
chmod +x "$f"
 | 
			
		||||
$SHELL "$f" > /dev/null  || err_exit "large here-doc with command substitution fails"
 | 
			
		||||
x=$(/bin/cat <<!
 | 
			
		||||
x=$("$bincat" <<!
 | 
			
		||||
$0
 | 
			
		||||
!
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +187,7 @@ cat  > "$f" <<- '!!!!'
 | 
			
		|||
	exec 0<&-
 | 
			
		||||
	foobar()
 | 
			
		||||
	{
 | 
			
		||||
		/bin/cat <<- !
 | 
			
		||||
		"$bincat" <<- !
 | 
			
		||||
		foobar
 | 
			
		||||
		!
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +213,7 @@ cat  > "$f" <<- '!!!!'
 | 
			
		|||
	EOF
 | 
			
		||||
	print -r -- "$(foobar)"
 | 
			
		||||
!!!!
 | 
			
		||||
if	[[ $($SHELL  "$f") != foobar ]]
 | 
			
		||||
if	[[ $(export bincat; "$SHELL" "$f") != foobar ]]
 | 
			
		||||
then	err_exit	'here document with stdin closed failed'
 | 
			
		||||
fi
 | 
			
		||||
printf $'cat   <<# \\!!!\n\thello\n\t\tworld\n!!!' > $f
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -478,9 +478,9 @@ print hello there world > $tmp/foobar
 | 
			
		|||
$SHELL -c "sed  -e 's/there //' $tmp/foobar  >; $tmp/foobar"
 | 
			
		||||
[[ $(<$tmp/foobar) == 'hello world' ]] || err_exit '>; redirection not working with -c on a simple command'
 | 
			
		||||
 | 
			
		||||
rm -f "$tmp/junk"
 | 
			
		||||
binfalse=$(whence -p false)
 | 
			
		||||
for	(( i=1; i < 50; i++ ))
 | 
			
		||||
do      out=$(/bin/ls "$tmp/junk" 2>/dev/null)
 | 
			
		||||
do      out=$("$binfalse" 2>/dev/null)
 | 
			
		||||
	if	(( $? == 0 ))
 | 
			
		||||
	then    err_exit 'wrong error code with redirection'
 | 
			
		||||
		break
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
bincat=$(whence -p cat)
 | 
			
		||||
 | 
			
		||||
if	[[ $( ${SHELL-ksh} -s hello<<-\!
 | 
			
		||||
		print $1
 | 
			
		||||
| 
						 | 
				
			
			@ -367,7 +368,7 @@ pipeline=(
 | 
			
		|||
	( nopipefail=1 pipefail=1 command='true|true|false' )
 | 
			
		||||
	( nopipefail=1 pipefail=1 command='false|false|false' )
 | 
			
		||||
	( nopipefail=0 pipefail=0 command='true|true|true' )
 | 
			
		||||
	( nopipefail=0 pipefail=0 command='print hi|(sleep 1;/bin/cat)>/dev/null' )
 | 
			
		||||
	( nopipefail=0 pipefail=0 command='print hi|(sleep 1;"$bincat")>/dev/null' )
 | 
			
		||||
)
 | 
			
		||||
set --nopipefail
 | 
			
		||||
for ((i = 0; i < ${#pipeline[@]}; i++ ))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@ alias err_exit='err_exit $LINENO'
 | 
			
		|||
 | 
			
		||||
Command=${0##*/}
 | 
			
		||||
integer Errors=0
 | 
			
		||||
binecho=$(whence -p echo)
 | 
			
		||||
 | 
			
		||||
if	[[ 'hi there' != "hi there" ]]
 | 
			
		||||
then	err_exit "single quotes not the same as double quotes"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -184,7 +186,7 @@ fi
 | 
			
		|||
if	[[ $x$ != '$hi$' ]]
 | 
			
		||||
then	err_exit ' $x$, with x=$hi, does not expand to $hi$'
 | 
			
		||||
fi
 | 
			
		||||
set -- $(/bin/echo foo;sleep 1;/bin/echo bar)
 | 
			
		||||
set -- $("$binecho" foo; sleep 1; "$binecho" bar)
 | 
			
		||||
if	[[ $# != 2 ]]
 | 
			
		||||
then	err_exit 'word splitting after command substitution not working'
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ tmp=$(
 | 
			
		|||
	exit 1
 | 
			
		||||
}
 | 
			
		||||
trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		||||
binecho=$(whence -p echo)
 | 
			
		||||
 | 
			
		||||
# test restricted shell
 | 
			
		||||
pwd=$PWD
 | 
			
		||||
| 
						 | 
				
			
			@ -57,7 +58,7 @@ ln -s $SHELL rksh
 | 
			
		|||
PATH=$PWD:$PATH
 | 
			
		||||
rksh -c  '[[ -o restricted ]]' || err_exit 'restricted option not set'
 | 
			
		||||
[[ $(rksh -c 'print hello') == hello ]] || err_exit 'unable to run print'
 | 
			
		||||
check_restricted /bin/echo || err_exit '/bin/echo not resticted'
 | 
			
		||||
check_restricted "$binecho" || err_exit "$binecho not resticted"
 | 
			
		||||
check_restricted ./echo || err_exit './echo not resticted'
 | 
			
		||||
check_restricted 'SHELL=ksh' || err_exit 'SHELL assignment not resticted'
 | 
			
		||||
check_restricted 'PATH=/bin' || err_exit 'PATH assignment not resticted'
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +71,7 @@ print 'echo hello' > script
 | 
			
		|||
chmod +x ./script
 | 
			
		||||
! check_restricted script ||  err_exit 'script without builtins should run in restricted mode'
 | 
			
		||||
check_restricted ./script ||  err_exit 'script with / in name should not run in restricted mode'
 | 
			
		||||
print '/bin/echo hello' > script
 | 
			
		||||
printf '%q hello\n' "$binecho" > script
 | 
			
		||||
! check_restricted script ||  err_exit 'script with pathnames should run in restricted mode'
 | 
			
		||||
print 'echo hello> file' > script
 | 
			
		||||
! check_restricted script ||  err_exit 'script with output redirection should run in restricted mode'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,7 +155,7 @@ done
 | 
			
		|||
(( d==2000 )) ||  err_exit "trap '' CHLD  causes side effects d=$d"
 | 
			
		||||
trap - CHLD
 | 
			
		||||
 | 
			
		||||
x=$($SHELL 2> /dev/null -ic '/bin/notfound; sleep .5 & sleep 1;jobs')
 | 
			
		||||
x=$($SHELL 2> /dev/null -ic '/dev/null/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')
 | 
			
		||||
[[ $x == *Done* ]] || err_exit 'SIGCHLD blocked after error message'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -283,18 +283,18 @@ then	float s=$SECONDS
 | 
			
		|||
	(( SECONDS-s < 4 )) && err_exit 'parent completes early'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
yes=$(whence -p yes)
 | 
			
		||||
if	[[ $yes ]]
 | 
			
		||||
then	for exp in TERM VTALRM PIPE
 | 
			
		||||
yes() for ((;;)); do print y; done
 | 
			
		||||
 | 
			
		||||
	for exp in TERM VTALRM PIPE
 | 
			
		||||
	do	if	[[ ${SIG[$exp]} ]]
 | 
			
		||||
		then	{
 | 
			
		||||
				$SHELL <<- EOF
 | 
			
		||||
				bindate=$(whence -p date) "$SHELL" <<- EOF
 | 
			
		||||
				foo() { return 0; }
 | 
			
		||||
				trap foo EXIT
 | 
			
		||||
				{ sleep 2; kill -$exp \$\$; sleep 3; kill -0 \$\$ && kill -KILL \$\$; } &
 | 
			
		||||
				$yes |
 | 
			
		||||
				yes |
 | 
			
		||||
				while read yes
 | 
			
		||||
				do	(/bin/date; sleep .1)
 | 
			
		||||
				do	("\$bindate"; sleep .1)
 | 
			
		||||
				done > /dev/null
 | 
			
		||||
				EOF
 | 
			
		||||
    			} 2>> /dev/null
 | 
			
		||||
| 
						 | 
				
			
			@ -302,7 +302,6 @@ then	for exp in TERM VTALRM PIPE
 | 
			
		|||
    			[[ $exp == $got ]] || err_exit "kill -$exp \$\$ failed, required termination by signal '$got'"
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
SECONDS=0
 | 
			
		||||
$SHELL 2> /dev/null -c 'sleep 2 && kill $$ & trap "print done; exit 3" EXIT; (sleep 5); print finished' > $tmp/sig
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,6 +39,7 @@ trap 'cd / && rm -rf "$tmp"' EXIT
 | 
			
		|||
 | 
			
		||||
builtin getconf
 | 
			
		||||
bincat=$(PATH=$(getconf PATH) whence -p cat)
 | 
			
		||||
binecho=$(PATH=$(getconf PATH) whence -p echo)
 | 
			
		||||
 | 
			
		||||
z=()
 | 
			
		||||
z.foo=( [one]=hello [two]=(x=3 y=4) [three]=hi)
 | 
			
		||||
| 
						 | 
				
			
			@ -466,9 +467,9 @@ exp=ok
 | 
			
		|||
got=$($SHELL -c "$cmd" 2>&1)
 | 
			
		||||
[[ $got == "$exp" ]] ||  err_exit "'$cmd' failed -- expected '$exp', got '$got'"
 | 
			
		||||
 | 
			
		||||
cmd='eval "for i in 1 2; do eval /bin/echo x; done"'
 | 
			
		||||
cmd='eval '\''for i in 1 2; do eval "\"\$binecho\" x"; done'\'
 | 
			
		||||
exp=$'x\nx'
 | 
			
		||||
got=$($SHELL -c "$cmd")
 | 
			
		||||
got=$(export binecho; $SHELL -c "$cmd")
 | 
			
		||||
if	[[ $got != "$exp" ]]
 | 
			
		||||
then	EXP=$(printf %q "$exp")
 | 
			
		||||
	GOT=$(printf %q "$got")
 | 
			
		||||
| 
						 | 
				
			
			@ -482,7 +483,7 @@ $SHELL -c 'sleep 20 & pid=$!; { x=$( ( seq 60000 ) );kill -9 $pid;}&;wait $pid'
 | 
			
		|||
 | 
			
		||||
(.sh.foo=foobar)
 | 
			
		||||
[[ ${.sh.foo} == foobar ]] && err_exit '.sh subvariables in subshells remain set'
 | 
			
		||||
[[ $($SHELL -c 'print 1 | : "$(/bin/cat <(/bin/cat))"') ]] && err_exit 'process substitution not working correctly in subshells'
 | 
			
		||||
[[ $($SHELL -c 'print 1 | : "$("$bincat" <("$bincat"))"') ]] && err_exit 'process substitution not working correctly in subshells'
 | 
			
		||||
 | 
			
		||||
# config hang bug
 | 
			
		||||
integer i
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue