aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_test
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-04-08 21:51:33 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-04-08 21:51:33 +0000
commit5c090a96f98f5a70af792945aa41ea53f82f39e2 (patch)
tree1a95c51f459436ca1e66157a708dbb34506e732c /shell/hush_test
parentffe6f8085170ed6a9780906374ca781e9c4291cb (diff)
downloadbusybox-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.right3
-rwxr-xr-xshell/hush_test/hush-misc/heredoc_huge.tests9
-rw-r--r--shell/hush_test/hush-psubst/tick_huge.right3
-rwxr-xr-xshell/hush_test/hush-psubst/tick_huge.tests7
-rw-r--r--shell/hush_test/hush-z_slow/leak_all2.right3
-rwxr-xr-xshell/hush_test/hush-z_slow/leak_all2.tests87
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 @@
1546ed3f5c81c780d3ab86ada14824237 -
2546ed3f5c81c780d3ab86ada14824237 -
3End
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
2echo 'cat <<HERE | md5sum' >"$0.tmp"
3yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp"
4echo 'HERE' >>"$0.tmp"
5
6yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum
7. "$0.tmp"
8rm "$0.tmp"
9echo 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 @@
1546ed3f5c81c780d3ab86ada14824237 -
2546ed3f5c81c780d3ab86ada14824237 -
3End
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
2yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp"
3
4echo "`cat $0.tmp`" | md5sum
5rm "$0.tmp"
6yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum
7echo 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 @@
1Warm up
2Measuring memory leak...
3Ok
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
8echo "Warm up"
9local_var="local val"
10export dev_null="/dev/null"
11>$dev_null
12echo hi1 $local_var `echo ho` >>/dev/null
13echo 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 )
16if 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"
21fi >>/dev/null
22{
23 if echo $local_var; then cat <<HERE
24Hi cat
25HERE
26 fi >>/dev/null
27} 1<>/dev/null
28while { 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
31memleak
32
33echo "Measuring memory leak..."
34# Please copy the entire block from above verbatim
35local_var="local val"
36export dev_null="/dev/null"
37>$dev_null
38echo hi1 $local_var `echo ho` >>/dev/null
39echo 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 )
42if 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"
47fi >>/dev/null
48{
49 if echo $local_var; then cat <<HERE
50Hi cat
51HERE
52 fi >>/dev/null
53} 1<>/dev/null
54while { 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
59local_var="local val"
60export dev_null="/dev/null"
61>$dev_null
62echo hi1 $local_var `echo ho` >>/dev/null
63echo 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 )
66if 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"
71fi >>/dev/null
72{
73 if echo $local_var; then cat <<HERE
74Hi cat
75HERE
76 fi >>/dev/null
77} 1<>/dev/null
78while { 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
81memleak
82kb=$?
83if test $kb -le 4; then
84 echo Ok #$kb
85else
86 echo "Bad: $kb kb (or more) leaked"
87fi