1194517Sjilles# $FreeBSD: releng/11.0/bin/sh/tests/builtins/trap2.0 194517 2009-06-19 22:15:59Z jilles $ 2194517Sjilles# This is really a test for outqstr(), which is readily accessible via trap. 3194517Sjilles 4194517Sjillesruntest() 5194517Sjilles{ 6194517Sjilles teststring=$1 7194517Sjilles trap -- "$teststring" USR1 8194517Sjilles traps=$(trap) 9194517Sjilles if [ "$teststring" != "-" ] && [ -z "$traps" ]; then 10194517Sjilles # One possible reading of POSIX requires the above to return an 11194517Sjilles # empty string because backquote commands are executed in a 12194517Sjilles # subshell and subshells shall reset traps. However, an example 13194517Sjilles # in the normative description of the trap builtin shows the 14194517Sjilles # same usage as here, it is useful and our /bin/sh allows it. 15194517Sjilles echo '$(trap) is broken' 16194517Sjilles exit 1 17194517Sjilles fi 18194517Sjilles trap - USR1 19194517Sjilles eval "$traps" 20194517Sjilles traps2=$(trap) 21194517Sjilles if [ "$traps" != "$traps2" ]; then 22194517Sjilles echo "Mismatch for '$teststring'" 23194517Sjilles exit 1 24194517Sjilles fi 25194517Sjilles} 26194517Sjilles 27194517Sjillesruntest 'echo' 28194517Sjillesruntest 'echo hi' 29194517Sjillesruntest "'echo' 'hi'" 30194517Sjillesruntest '"echo" $PATH' 31194517Sjillesruntest '\echo "$PATH"' 32194517Sjillesruntest ' 0' 33194517Sjillesruntest '0 ' 34194517Sjillesruntest ' 1' 35194517Sjillesruntest '1 ' 36194517Sjillesi=1 37194517Sjilleswhile [ $i -le 127 ]; do 38194517Sjilles c=$(printf \\"$(printf %o $i)") 39194517Sjilles if [ $i -lt 48 ] || [ $i -gt 57 ]; then 40194517Sjilles runtest "$c" 41194517Sjilles fi 42194517Sjilles runtest " $c$c" 43194517Sjilles runtest "a$c" 44194517Sjilles i=$((i+1)) 45194517Sjillesdone 46194517SjillesIFS=, 47194517Sjillesruntest ' ' 48194517Sjillesruntest ',' 49194517Sjillesunset IFS 50194517Sjillesruntest ' ' 51194517Sjilles 52194517Sjillesexit 0 53