xref: /freebsd/bin/sh/tests/builtins/trap2.0 (revision d0b2dbfa)
113de33a5SJulio Merino# This is really a test for outqstr(), which is readily accessible via trap.
213de33a5SJulio Merino
313de33a5SJulio Merinoruntest()
413de33a5SJulio Merino{
513de33a5SJulio Merino	teststring=$1
613de33a5SJulio Merino	trap -- "$teststring" USR1
713de33a5SJulio Merino	traps=$(trap)
813de33a5SJulio Merino	if [ "$teststring" != "-" ] && [ -z "$traps" ]; then
913de33a5SJulio Merino		# One possible reading of POSIX requires the above to return an
1013de33a5SJulio Merino		# empty string because backquote commands are executed in a
1113de33a5SJulio Merino		# subshell and subshells shall reset traps. However, an example
1213de33a5SJulio Merino		# in the normative description of the trap builtin shows the
1313de33a5SJulio Merino		# same usage as here, it is useful and our /bin/sh allows it.
1413de33a5SJulio Merino		echo '$(trap) is broken'
1513de33a5SJulio Merino		exit 1
1613de33a5SJulio Merino	fi
1713de33a5SJulio Merino	trap - USR1
1813de33a5SJulio Merino	eval "$traps"
1913de33a5SJulio Merino	traps2=$(trap)
2013de33a5SJulio Merino	if [ "$traps" != "$traps2" ]; then
2113de33a5SJulio Merino		echo "Mismatch for '$teststring'"
2213de33a5SJulio Merino		exit 1
2313de33a5SJulio Merino	fi
2413de33a5SJulio Merino}
2513de33a5SJulio Merino
2613de33a5SJulio Merinoruntest 'echo'
2713de33a5SJulio Merinoruntest 'echo hi'
2813de33a5SJulio Merinoruntest "'echo' 'hi'"
2913de33a5SJulio Merinoruntest '"echo" $PATH'
3013de33a5SJulio Merinoruntest '\echo "$PATH"'
3113de33a5SJulio Merinoruntest ' 0'
3213de33a5SJulio Merinoruntest '0 '
3313de33a5SJulio Merinoruntest ' 1'
3413de33a5SJulio Merinoruntest '1 '
3513de33a5SJulio Merinoi=1
3613de33a5SJulio Merinowhile [ $i -le 127 ]; do
3713de33a5SJulio Merino	c=$(printf \\"$(printf %o $i)")
3813de33a5SJulio Merino	if [ $i -lt 48 ] || [ $i -gt 57 ]; then
3913de33a5SJulio Merino		runtest "$c"
4013de33a5SJulio Merino	fi
4113de33a5SJulio Merino	runtest " $c$c"
4213de33a5SJulio Merino	runtest "a$c"
4313de33a5SJulio Merino	i=$((i+1))
4413de33a5SJulio Merinodone
4513de33a5SJulio MerinoIFS=,
4613de33a5SJulio Merinoruntest ' '
4713de33a5SJulio Merinoruntest ','
4813de33a5SJulio Merinounset IFS
4913de33a5SJulio Merinoruntest ' '
5013de33a5SJulio Merino
5113de33a5SJulio Merinoexit 0
52