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
This commit is contained in:
3
shell/hush_test/hush-misc/heredoc_huge.right
Normal file
3
shell/hush_test/hush-misc/heredoc_huge.right
Normal file
@@ -0,0 +1,3 @@
|
||||
546ed3f5c81c780d3ab86ada14824237 -
|
||||
546ed3f5c81c780d3ab86ada14824237 -
|
||||
End
|
9
shell/hush_test/hush-misc/heredoc_huge.tests
Executable file
9
shell/hush_test/hush-misc/heredoc_huge.tests
Executable file
@@ -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
|
3
shell/hush_test/hush-psubst/tick_huge.right
Normal file
3
shell/hush_test/hush-psubst/tick_huge.right
Normal file
@@ -0,0 +1,3 @@
|
||||
546ed3f5c81c780d3ab86ada14824237 -
|
||||
546ed3f5c81c780d3ab86ada14824237 -
|
||||
End
|
7
shell/hush_test/hush-psubst/tick_huge.tests
Executable file
7
shell/hush_test/hush-psubst/tick_huge.tests
Executable file
@@ -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
|
3
shell/hush_test/hush-z_slow/leak_all2.right
Normal file
3
shell/hush_test/hush-z_slow/leak_all2.right
Normal file
@@ -0,0 +1,3 @@
|
||||
Warm up
|
||||
Measuring memory leak...
|
||||
Ok
|
87
shell/hush_test/hush-z_slow/leak_all2.tests
Executable file
87
shell/hush_test/hush-z_slow/leak_all2.tests
Executable file
@@ -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
|
Reference in New Issue
Block a user