diff options
author | Denis Vlasenko | 2009-04-08 21:51:33 +0000 |
---|---|---|
committer | Denis Vlasenko | 2009-04-08 21:51:33 +0000 |
commit | 5c090a96f98f5a70af792945aa41ea53f82f39e2 (patch) | |
tree | 1a95c51f459436ca1e66157a708dbb34506e732c /shell/hush_test | |
parent | ffe6f8085170ed6a9780906374ca781e9c4291cb (diff) | |
download | busybox-5c090a96f98f5a70af792945aa41ea53f82f39e2.zip busybox-5c090a96f98f5a70af792945aa41ea53f82f39e2.tar.gz |
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 0000000..11740f6 --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_huge.right @@ -0,0 +1,3 @@ +546ed3f5c81c780d3ab86ada14824237 - +546ed3f5c81c780d3ab86ada14824237 - +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 0000000..c2ec281 --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_huge.tests @@ -0,0 +1,9 @@ +# This creates 120k heredoc +echo 'cat <<HERE | md5sum' >"$0.tmp" +yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp" +echo 'HERE' >>"$0.tmp" + +yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum +. "$0.tmp" +rm "$0.tmp" +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 0000000..11740f6 --- /dev/null +++ b/shell/hush_test/hush-psubst/tick_huge.right @@ -0,0 +1,3 @@ +546ed3f5c81c780d3ab86ada14824237 - +546ed3f5c81c780d3ab86ada14824237 - +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 0000000..acce92f --- /dev/null +++ b/shell/hush_test/hush-psubst/tick_huge.tests @@ -0,0 +1,7 @@ +# This creates 120k file +yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp" + +echo "`cat $0.tmp`" | md5sum +rm "$0.tmp" +yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum +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 0000000..c6f0334 --- /dev/null +++ b/shell/hush_test/hush-z_slow/leak_all2.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +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 0000000..8fb1ca9 --- /dev/null +++ b/shell/hush_test/hush-z_slow/leak_all2.tests @@ -0,0 +1,87 @@ +# "Check many leaks" test #2 +# Cramming all kinds of weird commands in here. +# As you find leaks, please create separate, small test +# for each leak. +# Narrowing down the leak using this large test may be difficult. +# It is intended to be a blanket "is everything ok?" test + +echo "Warm up" +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null + +memleak + +echo "Measuring memory leak..." +# Please copy the entire block from above verbatim +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null + +# And same again + +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null + +memleak +kb=$? +if test $kb -le 4; then + echo Ok #$kb +else + echo "Bad: $kb kb (or more) leaked" +fi |