diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-10 12:03:20 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-10 12:03:20 +0000 |
commit | 1fd1ea4395e520694bd9f8b1dc9e60af6442946d (patch) | |
tree | ffe931a1e9254789ac119321f88b17767176c73c /shell/hush_test | |
parent | 551bdfecb7cfb4df0f127d34884e0a9502324acd (diff) | |
download | busybox-w32-1fd1ea4395e520694bd9f8b1dc9e60af6442946d.tar.gz busybox-w32-1fd1ea4395e520694bd9f8b1dc9e60af6442946d.tar.bz2 busybox-w32-1fd1ea4395e520694bd9f8b1dc9e60af6442946d.zip |
hush: tighten up "for" variable name check.
Add TODOs.
Disable redir4.right part where we differ from bash.
It is not a bug per standards.
Add a few tests, one is in hush-bugs section:
and_or_and_backgrounding.right. It will likely bite users
in real world usage.
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-bugs/and_or_and_backgrounding.right | 4 | ||||
-rwxr-xr-x | shell/hush_test/hush-bugs/and_or_and_backgrounding.tests | 31 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/for_with_bslashes.right | 8 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/for_with_bslashes.tests | 10 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/redir1.tests | 2 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/redir4.right | 11 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/redir4.tests | 7 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/param_subshell.tests | 4 |
8 files changed, 64 insertions, 13 deletions
diff --git a/shell/hush_test/hush-bugs/and_or_and_backgrounding.right b/shell/hush_test/hush-bugs/and_or_and_backgrounding.right new file mode 100644 index 000000000..90ce63e01 --- /dev/null +++ b/shell/hush_test/hush-bugs/and_or_and_backgrounding.right | |||
@@ -0,0 +1,4 @@ | |||
1 | First | ||
2 | Second | ||
3 | Third | ||
4 | Done | ||
diff --git a/shell/hush_test/hush-bugs/and_or_and_backgrounding.tests b/shell/hush_test/hush-bugs/and_or_and_backgrounding.tests new file mode 100755 index 000000000..05acfb863 --- /dev/null +++ b/shell/hush_test/hush-bugs/and_or_and_backgrounding.tests | |||
@@ -0,0 +1,31 @@ | |||
1 | # UNFIXED BUG: hush thinks that ; && || & have the same precedence. | ||
2 | # According to this doc, && || have higher precedence than ; &. | ||
3 | # See example below. | ||
4 | # Precedence of ; is not a problem in practice. Precedence of & is. | ||
5 | # | ||
6 | #http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html | ||
7 | # | ||
8 | #2.9.3 Lists | ||
9 | # | ||
10 | #An AND-OR list is a sequence of one or more pipelines separated by | ||
11 | #the operators "&&" and "||" . | ||
12 | # | ||
13 | #A list is a sequence of one or more AND-OR lists separated by the operators | ||
14 | #';' and '&' and optionally terminated by ';', '&', or <newline>. | ||
15 | # | ||
16 | #The operators "&&" and "||" shall have equal precedence and shall be | ||
17 | #evaluated with left associativity. For example, both of the following | ||
18 | #commands write solely bar to standard output: | ||
19 | # | ||
20 | # false && echo foo || echo bar | ||
21 | # true || echo foo && echo bar | ||
22 | # | ||
23 | #A ';' or <newline> terminator shall cause the preceding AND-OR list | ||
24 | #to be executed sequentially; an '&' shall cause asynchronous execution | ||
25 | #of the preceding AND-OR list. | ||
26 | |||
27 | echo First && sleep 0.2 && echo Third & | ||
28 | sleep 0.1 | ||
29 | echo Second | ||
30 | wait | ||
31 | echo Done | ||
diff --git a/shell/hush_test/hush-misc/for_with_bslashes.right b/shell/hush_test/hush-misc/for_with_bslashes.right new file mode 100644 index 000000000..02d96692c --- /dev/null +++ b/shell/hush_test/hush-misc/for_with_bslashes.right | |||
@@ -0,0 +1,8 @@ | |||
1 | a | ||
2 | b\c | ||
3 | b\\c | ||
4 | b"c | ||
5 | b'c | ||
6 | b$c | ||
7 | b`true`c | ||
8 | Zero:0 | ||
diff --git a/shell/hush_test/hush-misc/for_with_bslashes.tests b/shell/hush_test/hush-misc/for_with_bslashes.tests new file mode 100755 index 000000000..363f3d85b --- /dev/null +++ b/shell/hush_test/hush-misc/for_with_bslashes.tests | |||
@@ -0,0 +1,10 @@ | |||
1 | # UNFIXED BUG. | ||
2 | # commented-out words contain ^C character. | ||
3 | # It's a SPECIAL_VAR_SYMBOL, for now hush does not escape it. | ||
4 | # When it is fixed, update this test. | ||
5 | |||
6 | for a in 'a' 'b\c' 'b\\c' 'b"c' "b'c" 'b$c' 'b`true`c' ### 'b#c' | ||
7 | do | ||
8 | echo $a | ||
9 | done | ||
10 | echo Zero:$? | ||
diff --git a/shell/hush_test/hush-misc/redir1.tests b/shell/hush_test/hush-misc/redir1.tests index 70e9e17f0..ef2fbfb77 100755 --- a/shell/hush_test/hush-misc/redir1.tests +++ b/shell/hush_test/hush-misc/redir1.tests | |||
@@ -27,7 +27,7 @@ var=ok | |||
27 | { var=bad >shell_test_$$; } & | 27 | { var=bad >shell_test_$$; } & |
28 | # cant use usleep as it isnt standard in $PATH -- | 28 | # cant use usleep as it isnt standard in $PATH -- |
29 | # we fail when testing busybox compiled solely as "hush" | 29 | # we fail when testing busybox compiled solely as "hush" |
30 | sleep 1 | 30 | wait |
31 | echo "Test 4: var:$var" | 31 | echo "Test 4: var:$var" |
32 | test -f shell_test_$$ && echo "File created:ok" | 32 | test -f shell_test_$$ && echo "File created:ok" |
33 | 33 | ||
diff --git a/shell/hush_test/hush-misc/redir4.right b/shell/hush_test/hush-misc/redir4.right index ada6c2d85..ead25f603 100644 --- a/shell/hush_test/hush-misc/redir4.right +++ b/shell/hush_test/hush-misc/redir4.right | |||
@@ -10,16 +10,9 @@ Here3 | |||
10 | Ok3 | 10 | Ok3 |
11 | Here4 | 11 | Here4 |
12 | Ok4 | 12 | Ok4 |
13 | How with variable refs | 13 | Now with variable refs |
14 | shell_test_1 | 14 | shell_test_1 |
15 | \shell_test_1 | 15 | \shell_test_1 |
16 | \shell_test_1 | 16 | \shell_test_1 |
17 | \shell_test_1 | 17 | \shell_test_1 |
18 | Here1 | 18 | Done |
19 | Ok1 | ||
20 | Here2 | ||
21 | Ok2 | ||
22 | Here3 | ||
23 | Ok3 | ||
24 | Here4 | ||
25 | Ok4 | ||
diff --git a/shell/hush_test/hush-misc/redir4.tests b/shell/hush_test/hush-misc/redir4.tests index ac2a44166..c50b8cedf 100755 --- a/shell/hush_test/hush-misc/redir4.tests +++ b/shell/hush_test/hush-misc/redir4.tests | |||
@@ -38,7 +38,7 @@ Here4 | |||
38 | echo Ok4 | 38 | echo Ok4 |
39 | 39 | ||
40 | 40 | ||
41 | echo How with variable refs | 41 | echo Now with variable refs |
42 | i=1 | 42 | i=1 |
43 | 43 | ||
44 | 44 | ||
@@ -58,6 +58,11 @@ rm *shell_test* | |||
58 | echo *shell_test* | 58 | echo *shell_test* |
59 | rm *shell_test* | 59 | rm *shell_test* |
60 | 60 | ||
61 | echo Done;exit | ||
62 | # UNFIXED BUG. bash apparently will expand $i even in terminating delimiter. | ||
63 | # http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html | ||
64 | # does not mandate this behavior. | ||
65 | # This is not likely to be used much in real-world. | ||
61 | 66 | ||
62 | cat <<\shell_test_$i | 67 | cat <<\shell_test_$i |
63 | Here1 | 68 | Here1 |
diff --git a/shell/hush_test/hush-vars/param_subshell.tests b/shell/hush_test/hush-vars/param_subshell.tests index 565a84589..27fdc5b9b 100755 --- a/shell/hush_test/hush-vars/param_subshell.tests +++ b/shell/hush_test/hush-vars/param_subshell.tests | |||
@@ -7,9 +7,9 @@ echo 1=$1 | |||
7 | { echo 3=$3; } & | 7 | { echo 3=$3; } & |
8 | # cant use usleep as it isnt standard in $PATH -- | 8 | # cant use usleep as it isnt standard in $PATH -- |
9 | # we fail when testing busybox compiled solely as "hush" | 9 | # we fail when testing busybox compiled solely as "hush" |
10 | sleep 1 | 10 | wait |
11 | ( echo 4=$4 ) | 11 | ( echo 4=$4 ) |
12 | ( echo 5=$5 ) & | 12 | ( echo 5=$5 ) & |
13 | sleep 1 | 13 | wait |
14 | true | echo 6=$6 | cat | 14 | true | echo 6=$6 | cat |
15 | true | { echo 7=$7; } | cat | 15 | true | { echo 7=$7; } | cat |