xref: /dflybsd-src/tools/regression/bin/sh/builtins/trap2.0 (revision 3e3895bf4584c1562faf4533cbd97026ee6a8dcf)
1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/builtins/trap2.0 194517 2009-06-19 22:15:59Z jilles $
23df4d8b0SPeter Avalos# This is really a test for outqstr(), which is readily accessible via trap.
33df4d8b0SPeter Avalos
43df4d8b0SPeter Avalosruntest()
53df4d8b0SPeter Avalos{
63df4d8b0SPeter Avalos	teststring=$1
73df4d8b0SPeter Avalos	trap -- "$teststring" USR1
83df4d8b0SPeter Avalos	traps=$(trap)
93df4d8b0SPeter Avalos	if [ "$teststring" != "-" ] && [ -z "$traps" ]; then
103df4d8b0SPeter Avalos		# One possible reading of POSIX requires the above to return an
113df4d8b0SPeter Avalos		# empty string because backquote commands are executed in a
123df4d8b0SPeter Avalos		# subshell and subshells shall reset traps. However, an example
133df4d8b0SPeter Avalos		# in the normative description of the trap builtin shows the
143df4d8b0SPeter Avalos		# same usage as here, it is useful and our /bin/sh allows it.
153df4d8b0SPeter Avalos		echo '$(trap) is broken'
163df4d8b0SPeter Avalos		exit 1
173df4d8b0SPeter Avalos	fi
183df4d8b0SPeter Avalos	trap - USR1
193df4d8b0SPeter Avalos	eval "$traps"
203df4d8b0SPeter Avalos	traps2=$(trap)
213df4d8b0SPeter Avalos	if [ "$traps" != "$traps2" ]; then
223df4d8b0SPeter Avalos		echo "Mismatch for '$teststring'"
233df4d8b0SPeter Avalos		exit 1
243df4d8b0SPeter Avalos	fi
253df4d8b0SPeter Avalos}
263df4d8b0SPeter Avalos
273df4d8b0SPeter Avalosruntest 'echo'
283df4d8b0SPeter Avalosruntest 'echo hi'
293df4d8b0SPeter Avalosruntest "'echo' 'hi'"
303df4d8b0SPeter Avalosruntest '"echo" $PATH'
313df4d8b0SPeter Avalosruntest '\echo "$PATH"'
323df4d8b0SPeter Avalosruntest ' 0'
333df4d8b0SPeter Avalosruntest '0 '
343df4d8b0SPeter Avalosruntest ' 1'
353df4d8b0SPeter Avalosruntest '1 '
363df4d8b0SPeter Avalosi=1
373df4d8b0SPeter Avaloswhile [ $i -le 127 ]; do
383df4d8b0SPeter Avalos	c=$(printf \\"$(printf %o $i)")
393df4d8b0SPeter Avalos	if [ $i -lt 48 ] || [ $i -gt 57 ]; then
403df4d8b0SPeter Avalos		runtest "$c"
413df4d8b0SPeter Avalos	fi
423df4d8b0SPeter Avalos	runtest " $c$c"
433df4d8b0SPeter Avalos	runtest "a$c"
443df4d8b0SPeter Avalos	i=$((i+1))
453df4d8b0SPeter Avalosdone
463df4d8b0SPeter AvalosIFS=,
473df4d8b0SPeter Avalosruntest ' '
483df4d8b0SPeter Avalosruntest ','
493df4d8b0SPeter Avalosunset IFS
503df4d8b0SPeter Avalosruntest ' '
513df4d8b0SPeter Avalos
523df4d8b0SPeter Avalosexit 0
53