]>
Commit | Line | Data |
---|---|---|
8868edaf CR |
1 | # This program is free software: you can redistribute it and/or modify |
2 | # it under the terms of the GNU General Public License as published by | |
3 | # the Free Software Foundation, either version 3 of the License, or | |
4 | # (at your option) any later version. | |
5 | # | |
6 | # This program is distributed in the hope that it will be useful, | |
7 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
8 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
9 | # GNU General Public License for more details. | |
10 | # | |
11 | # You should have received a copy of the GNU General Public License | |
12 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
13 | # | |
14 | ||
15 | # test that optimizing command lists doesn't inappropriately short-cut commands | |
16 | ||
17 | # also includes optimizing last command in a list separated by `;' | |
18 | ||
19 | if [ -x /bin/echo ] ; then | |
20 | binecho=/bin/echo | |
21 | elif [ -x /usr/bin/echo ]; then | |
22 | binecho=/usr/bin/echo | |
23 | else | |
24 | enable -n echo | |
25 | binecho=echo | |
26 | fi | |
27 | ||
28 | export binecho | |
29 | ||
30 | : ${THIS_SH:=./bash} ${TMPDIR:=/var/tmp} | |
31 | ||
32 | ${THIS_SH} -c 'trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$' | |
33 | ${THIS_SH} -c 'trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ; $binecho done' | |
34 | ||
35 | ( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ) | |
36 | ||
37 | ${THIS_SH} -c 'echo a && { $binecho b && $binecho c ; } && echo d' | |
38 | ${THIS_SH} -c 'echo a && { $binecho b && $binecho c ; } && echo d ; $binecho e' | |
39 | ||
40 | ${THIS_SH} -c 'echo A && $binecho B' | |
41 | ${THIS_SH} -c '$binecho c && echo d' | |
42 | ||
43 | $THIS_SH -c '$binecho c && $binecho d && echo e' | |
44 | ||
45 | $THIS_SH -c 'trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z' | |
46 | ||
47 | ${THIS_SH} -c 'echo w ; { echo x ; $binecho y; }; $binecho z' | |
187661b8 CR |
48 | |
49 | echo ===== | |
50 | ||
51 | ( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ) | |
52 | ( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ; $binecho done ) | |
53 | ||
54 | ( echo a && { $binecho b && $binecho c ; } && echo d ) | |
55 | ( echo a && { $binecho b && $binecho c ; } && echo d ; $binecho e ) | |
56 | ||
57 | ( echo A && $binecho B ) | |
58 | ( $binecho c && echo d ) | |
59 | ||
60 | ( $binecho c && $binecho d && echo e ) | |
61 | ||
62 | ( trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z ) | |
63 | ||
64 | ( echo w ; { echo x ; $binecho y; }; $binecho z ) |