]>
Commit | Line | Data |
---|---|---|
1 | # $FreeBSD: head/bin/sh/tests/builtins/trap2.0 194517 2009-06-19 22:15:59Z jilles $ | |
2 | # This is really a test for outqstr(), which is readily accessible via trap. | |
3 | ||
4 | runtest() | |
5 | { | |
6 | teststring=$1 | |
7 | trap -- "$teststring" USR1 | |
8 | traps=$(trap) | |
9 | if [ "$teststring" != "-" ] && [ -z "$traps" ]; then | |
10 | # One possible reading of POSIX requires the above to return an | |
11 | # empty string because backquote commands are executed in a | |
12 | # subshell and subshells shall reset traps. However, an example | |
13 | # in the normative description of the trap builtin shows the | |
14 | # same usage as here, it is useful and our /bin/sh allows it. | |
15 | echo '$(trap) is broken' | |
16 | exit 1 | |
17 | fi | |
18 | trap - USR1 | |
19 | eval "$traps" | |
20 | traps2=$(trap) | |
21 | if [ "$traps" != "$traps2" ]; then | |
22 | echo "Mismatch for '$teststring'" | |
23 | exit 1 | |
24 | fi | |
25 | } | |
26 | ||
27 | runtest 'echo' | |
28 | runtest 'echo hi' | |
29 | runtest "'echo' 'hi'" | |
30 | runtest '"echo" $PATH' | |
31 | runtest '\echo "$PATH"' | |
32 | runtest ' 0' | |
33 | runtest '0 ' | |
34 | runtest ' 1' | |
35 | runtest '1 ' | |
36 | i=1 | |
37 | while [ $i -le 127 ]; do | |
38 | c=$(printf \\"$(printf %o $i)") | |
39 | if [ $i -lt 48 ] || [ $i -gt 57 ]; then | |
40 | runtest "$c" | |
41 | fi | |
42 | runtest " $c$c" | |
43 | runtest "a$c" | |
44 | i=$((i+1)) | |
45 | done | |
46 | IFS=, | |
47 | runtest ' ' | |
48 | runtest ',' | |
49 | unset IFS | |
50 | runtest ' ' | |
51 | ||
52 | exit 0 |