diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-09-06 11:27:32 +0200 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-09-06 11:27:32 +0200 |
commit | 77b32ccbf2a1a77911b486b673008a4cb82bb8b7 (patch) | |
tree | c68a1bef8013018843321d6807aa87ca432808b1 /shell/hush_test | |
parent | c49d2d97939d77be3d1f3bbbbf9db30a55771c15 (diff) | |
download | busybox-w32-77b32ccbf2a1a77911b486b673008a4cb82bb8b7.tar.gz busybox-w32-77b32ccbf2a1a77911b486b673008a4cb82bb8b7.tar.bz2 busybox-w32-77b32ccbf2a1a77911b486b673008a4cb82bb8b7.zip |
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 000000000..234c0172f --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_backslash1.right | |||
@@ -0,0 +1,27 @@ | |||
1 | Quoted heredoc: | ||
2 | a\ | ||
3 | b | ||
4 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
5 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
6 | c\ | ||
7 | |||
8 | Unquoted heredoc: | ||
9 | a b | ||
10 | 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- | ||
11 | -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- | ||
12 | cEOF2 | ||
13 | |||
14 | Quoted -heredoc: | ||
15 | a\ | ||
16 | b | ||
17 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
18 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
19 | c\ | ||
20 | |||
21 | Unquoted -heredoc: | ||
22 | a b | ||
23 | 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- | ||
24 | -qwerty-\t-\-\"-\'-`-\--\z-\*-\?- | ||
25 | cEOF4 | ||
26 | |||
27 | 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 000000000..b70467df8 --- /dev/null +++ b/shell/hush_test/hush-misc/heredoc_backslash1.tests | |||
@@ -0,0 +1,54 @@ | |||
1 | # Test for correct handling of backslashes. | ||
2 | # Note that some lines in each heredoc start with a tab. | ||
3 | |||
4 | a=qwerty | ||
5 | |||
6 | echo Quoted heredoc: | ||
7 | cat <<"EOF1" | ||
8 | a\ | ||
9 | b | ||
10 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
11 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
12 | c\ | ||
13 | EOF1 | ||
14 | echo | ||
15 | |||
16 | echo Unquoted heredoc: | ||
17 | cat <<EOF2 | ||
18 | a\ | ||
19 | b | ||
20 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
21 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
22 | c\ | ||
23 | EOF2 | ||
24 | EOF2 | ||
25 | echo | ||
26 | |||
27 | echo Quoted -heredoc: | ||
28 | cat <<-"EOF3" | ||
29 | a\ | ||
30 | b | ||
31 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
32 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
33 | c\ | ||
34 | EOF3 | ||
35 | # In -heredoc case the marker is detected even if it is indented. | ||
36 | echo | ||
37 | |||
38 | echo Unquoted -heredoc: | ||
39 | cat <<-EOF4 | ||
40 | a\ | ||
41 | b | ||
42 | 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
43 | -$a-\t-\\-\"-\'-\`-\--\z-\*-\?- | ||
44 | c\ | ||
45 | EOF4 | ||
46 | EOF4 | ||
47 | # The marker is not detected if preceding line ends in backslash. | ||
48 | # TODO: marker should be detected even if it is split by line continuation: | ||
49 | # EOF\ | ||
50 | # 4 | ||
51 | # but currently hush doesn't do it. (Tab before "4" is not allowed, though.) | ||
52 | echo | ||
53 | |||
54 | echo "Done: $?" | ||