diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-08 21:51:33 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-08 21:51:33 +0000 |
commit | 5c090a96f98f5a70af792945aa41ea53f82f39e2 (patch) | |
tree | 1a95c51f459436ca1e66157a708dbb34506e732c /shell/hush_test | |
parent | ffe6f8085170ed6a9780906374ca781e9c4291cb (diff) | |
download | busybox-w32-5c090a96f98f5a70af792945aa41ea53f82f39e2.tar.gz busybox-w32-5c090a96f98f5a70af792945aa41ea53f82f39e2.tar.bz2 busybox-w32-5c090a96f98f5a70af792945aa41ea53f82f39e2.zip |
hush: more rodust detection of unterminated strings etc;
fix a case where we forget to copy `cmd` text;
optimize nommu heredoc helper by not passing environment to it;
add several tests
function old new delta
add_till_closing_paren 256 308 +52
parse_stream 2337 2378 +41
add_till_backquote 82 111 +29
re_execute_shell 269 284 +15
handle_dollar 802 812 +10
parse_stream_dquoted 316 320 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/0 up/down: 151/0) Total: 151 bytes
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-misc/heredoc_huge.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/heredoc_huge.tests | 9 | ||||
-rw-r--r-- | shell/hush_test/hush-psubst/tick_huge.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-psubst/tick_huge.tests | 7 | ||||
-rw-r--r-- | shell/hush_test/hush-z_slow/leak_all2.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-z_slow/leak_all2.tests | 87 |
6 files changed, 112 insertions, 0 deletions
diff --git a/shell/hush_test/hush-misc/heredoc_huge.right b/shell/hush_test/hush-misc/heredoc_huge.right new file mode 100644 index 000000000..11740f674 --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_huge.right | |||
@@ -0,0 +1,3 @@ | |||
1 | 546ed3f5c81c780d3ab86ada14824237 - | ||
2 | 546ed3f5c81c780d3ab86ada14824237 - | ||
3 | End | ||
diff --git a/shell/hush_test/hush-misc/heredoc_huge.tests b/shell/hush_test/hush-misc/heredoc_huge.tests new file mode 100755 index 000000000..c2ec2817b --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_huge.tests | |||
@@ -0,0 +1,9 @@ | |||
1 | # This creates 120k heredoc | ||
2 | echo 'cat <<HERE | md5sum' >"$0.tmp" | ||
3 | yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp" | ||
4 | echo 'HERE' >>"$0.tmp" | ||
5 | |||
6 | yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum | ||
7 | . "$0.tmp" | ||
8 | rm "$0.tmp" | ||
9 | echo End | ||
diff --git a/shell/hush_test/hush-psubst/tick_huge.right b/shell/hush_test/hush-psubst/tick_huge.right new file mode 100644 index 000000000..11740f674 --- /dev/null +++ b/shell/hush_test/hush-psubst/tick_huge.right | |||
@@ -0,0 +1,3 @@ | |||
1 | 546ed3f5c81c780d3ab86ada14824237 - | ||
2 | 546ed3f5c81c780d3ab86ada14824237 - | ||
3 | End | ||
diff --git a/shell/hush_test/hush-psubst/tick_huge.tests b/shell/hush_test/hush-psubst/tick_huge.tests new file mode 100755 index 000000000..acce92fb2 --- /dev/null +++ b/shell/hush_test/hush-psubst/tick_huge.tests | |||
@@ -0,0 +1,7 @@ | |||
1 | # This creates 120k file | ||
2 | yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp" | ||
3 | |||
4 | echo "`cat $0.tmp`" | md5sum | ||
5 | rm "$0.tmp" | ||
6 | yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum | ||
7 | echo End | ||
diff --git a/shell/hush_test/hush-z_slow/leak_all2.right b/shell/hush_test/hush-z_slow/leak_all2.right new file mode 100644 index 000000000..c6f0334f3 --- /dev/null +++ b/shell/hush_test/hush-z_slow/leak_all2.right | |||
@@ -0,0 +1,3 @@ | |||
1 | Warm up | ||
2 | Measuring memory leak... | ||
3 | Ok | ||
diff --git a/shell/hush_test/hush-z_slow/leak_all2.tests b/shell/hush_test/hush-z_slow/leak_all2.tests new file mode 100755 index 000000000..8fb1ca9b4 --- /dev/null +++ b/shell/hush_test/hush-z_slow/leak_all2.tests | |||
@@ -0,0 +1,87 @@ | |||
1 | # "Check many leaks" test #2 | ||
2 | # Cramming all kinds of weird commands in here. | ||
3 | # As you find leaks, please create separate, small test | ||
4 | # for each leak. | ||
5 | # Narrowing down the leak using this large test may be difficult. | ||
6 | # It is intended to be a blanket "is everything ok?" test | ||
7 | |||
8 | echo "Warm up" | ||
9 | local_var="local val" | ||
10 | export dev_null="/dev/null" | ||
11 | >$dev_null | ||
12 | echo hi1 $local_var `echo ho` >>/dev/null | ||
13 | echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null | ||
14 | { echo hi4 $local_var `echo ho` 1<>/dev/null; } | ||
15 | ( echo hi4 $local_var `echo ho` 1<>/dev/null ) | ||
16 | if echo $local_var; false | ||
17 | then echo not run | ||
18 | elif false <$dev_null | ||
19 | then none | ||
20 | else cat 0<>$dev_null 1<>"$dev_null" | ||
21 | fi >>/dev/null | ||
22 | { | ||
23 | if echo $local_var; then cat <<HERE | ||
24 | Hi cat | ||
25 | HERE | ||
26 | fi >>/dev/null | ||
27 | } 1<>/dev/null | ||
28 | while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done | ||
29 | ( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null | ||
30 | |||
31 | memleak | ||
32 | |||
33 | echo "Measuring memory leak..." | ||
34 | # Please copy the entire block from above verbatim | ||
35 | local_var="local val" | ||
36 | export dev_null="/dev/null" | ||
37 | >$dev_null | ||
38 | echo hi1 $local_var `echo ho` >>/dev/null | ||
39 | echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null | ||
40 | { echo hi4 $local_var `echo ho` 1<>/dev/null; } | ||
41 | ( echo hi4 $local_var `echo ho` 1<>/dev/null ) | ||
42 | if echo $local_var; false | ||
43 | then echo not run | ||
44 | elif false <$dev_null | ||
45 | then none | ||
46 | else cat 0<>$dev_null 1<>"$dev_null" | ||
47 | fi >>/dev/null | ||
48 | { | ||
49 | if echo $local_var; then cat <<HERE | ||
50 | Hi cat | ||
51 | HERE | ||
52 | fi >>/dev/null | ||
53 | } 1<>/dev/null | ||
54 | while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done | ||
55 | ( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null | ||
56 | |||
57 | # And same again | ||
58 | |||
59 | local_var="local val" | ||
60 | export dev_null="/dev/null" | ||
61 | >$dev_null | ||
62 | echo hi1 $local_var `echo ho` >>/dev/null | ||
63 | echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null | ||
64 | { echo hi4 $local_var `echo ho` 1<>/dev/null; } | ||
65 | ( echo hi4 $local_var `echo ho` 1<>/dev/null ) | ||
66 | if echo $local_var; false | ||
67 | then echo not run | ||
68 | elif false <$dev_null | ||
69 | then none | ||
70 | else cat 0<>$dev_null 1<>"$dev_null" | ||
71 | fi >>/dev/null | ||
72 | { | ||
73 | if echo $local_var; then cat <<HERE | ||
74 | Hi cat | ||
75 | HERE | ||
76 | fi >>/dev/null | ||
77 | } 1<>/dev/null | ||
78 | while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done | ||
79 | ( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null | ||
80 | |||
81 | memleak | ||
82 | kb=$? | ||
83 | if test $kb -le 4; then | ||
84 | echo Ok #$kb | ||
85 | else | ||
86 | echo "Bad: $kb kb (or more) leaked" | ||
87 | fi | ||