diff options
author | Denys Vlasenko | 2010-09-06 11:27:32 +0200 |
---|---|---|
committer | Denys Vlasenko | 2010-09-06 11:27:32 +0200 |
commit | 77b32ccbf2a1a77911b486b673008a4cb82bb8b7 (patch) | |
tree | c68a1bef8013018843321d6807aa87ca432808b1 /shell/hush_test | |
parent | c49d2d97939d77be3d1f3bbbbf9db30a55771c15 (diff) | |
download | busybox-77b32ccbf2a1a77911b486b673008a4cb82bb8b7.zip busybox-77b32ccbf2a1a77911b486b673008a4cb82bb8b7.tar.gz |
hush: fix backslash and terminator handling in <<[-]["]heredoc["]
function old new delta
parse_stream 2339 2395 +56
expand_pseudo_dquoted 104 118 +14
parse_stream_dquoted 296 300 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 74/0) Total: 74 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-misc/heredoc_backslash1.right | 27 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/heredoc_backslash1.tests | 54 |
2 files changed, 81 insertions, 0 deletions
diff --git a/shell/hush_test/hush-misc/heredoc_backslash1.right b/shell/hush_test/hush-misc/heredoc_backslash1.right new file mode 100644 index 0000000..234c017 --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_backslash1.right @@ -0,0 +1,27 @@ +Quoted heredoc: +a\ + b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- + -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ + +Unquoted heredoc: +a b + 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- + -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- +cEOF2 + +Quoted -heredoc: +a\ +b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +-$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ + +Unquoted -heredoc: +a b + 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- +-qwerty-\t-\-\"-\'-`-\--\z-\*-\?- +cEOF4 + +Done: 0 diff --git a/shell/hush_test/hush-misc/heredoc_backslash1.tests b/shell/hush_test/hush-misc/heredoc_backslash1.tests new file mode 100755 index 0000000..b70467d --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_backslash1.tests @@ -0,0 +1,54 @@ +# Test for correct handling of backslashes. +# Note that some lines in each heredoc start with a tab. + +a=qwerty + +echo Quoted heredoc: +cat <<"EOF1" +a\ + b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- + -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ +EOF1 +echo + +echo Unquoted heredoc: +cat <<EOF2 +a\ + b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- + -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ +EOF2 +EOF2 +echo + +echo Quoted -heredoc: +cat <<-"EOF3" +a\ + b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- + -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ + EOF3 +# In -heredoc case the marker is detected even if it is indented. +echo + +echo Unquoted -heredoc: +cat <<-EOF4 +a\ + b + 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- + -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- +c\ +EOF4 + EOF4 +# The marker is not detected if preceding line ends in backslash. +# TODO: marker should be detected even if it is split by line continuation: +# EOF\ +# 4 +# but currently hush doesn't do it. (Tab before "4" is not allowed, though.) +echo + +echo "Done: $?" |