diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-03-28 18:55:34 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-03-28 18:55:34 +0000 |
commit | 78f9d8eb7adc10f1af8977212f24ab3c418a9c2b (patch) | |
tree | d63f339b310304c2c8c116503b41f589882ba2be | |
parent | 6379bb4fde15dae3be641625e9af377eeb5a64d8 (diff) | |
download | busybox-w32-78f9d8eb7adc10f1af8977212f24ab3c418a9c2b.tar.gz busybox-w32-78f9d8eb7adc10f1af8977212f24ab3c418a9c2b.tar.bz2 busybox-w32-78f9d8eb7adc10f1af8977212f24ab3c418a9c2b.zip |
add hush tests for parameter expansion
10 files changed, 210 insertions, 0 deletions
diff --git a/shell/hush_test/hush-vars/param_expand_alt.right b/shell/hush_test/hush-vars/param_expand_alt.right new file mode 100644 index 000000000..4d2197a5e --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_alt.right | |||
@@ -0,0 +1,8 @@ | |||
1 | hush: syntax error: unterminated ${name} | ||
2 | hush: syntax error: unterminated ${name} | ||
3 | _0 _0 | ||
4 | _ _ _ _ _ | ||
5 | _aaaa _ _ _word _word | ||
6 | _ _ _ _ _ | ||
7 | _ _ _ _word _ | ||
8 | _fff _ _ _word _word | ||
diff --git a/shell/hush_test/hush-vars/param_expand_alt.tests b/shell/hush_test/hush-vars/param_expand_alt.tests new file mode 100755 index 000000000..c46075b8d --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_alt.tests | |||
@@ -0,0 +1,22 @@ | |||
1 | # first try some invalid patterns (do in subshell due to parsing error) | ||
2 | hush -c 'echo ${+} ; echo moo' | ||
3 | hush -c 'echo ${:+} ; echo moo' | ||
4 | |||
5 | # now some funky ones | ||
6 | echo _${#+} _${#:+} | ||
7 | |||
8 | # now some valid ones | ||
9 | set -- | ||
10 | echo _$1 _${1+} _${1:+} _${1+word} _${1:+word} | ||
11 | |||
12 | set -- aaaa | ||
13 | echo _$1 _${1+} _${1:+} _${1+word} _${1:+word} | ||
14 | |||
15 | unset f | ||
16 | echo _$f _${f+} _${f:+} _${f+word} _${f:+word} | ||
17 | |||
18 | f= | ||
19 | echo _$f _${f+} _${f:+} _${f+word} _${f:+word} | ||
20 | |||
21 | f=fff | ||
22 | echo _$f _${f+} _${f:+} _${f+word} _${f:+word} | ||
diff --git a/shell/hush_test/hush-vars/param_expand_assign.right b/shell/hush_test/hush-vars/param_expand_assign.right new file mode 100644 index 000000000..fff4ead33 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_assign.right | |||
@@ -0,0 +1,27 @@ | |||
1 | hush: syntax error: unterminated ${name} | ||
2 | hush: syntax error: unterminated ${name} | ||
3 | 0 | ||
4 | 0 | ||
5 | hush: 1: special vars cannot assign in this way | ||
6 | hush: 1: special vars cannot assign in this way | ||
7 | hush: 1: special vars cannot assign in this way | ||
8 | hush: 1: special vars cannot assign in this way | ||
9 | _aa | ||
10 | _aa | ||
11 | _aa | ||
12 | _aa | ||
13 | _ | ||
14 | _ | ||
15 | _ | ||
16 | _word | ||
17 | _word | ||
18 | _ | ||
19 | _ | ||
20 | _ | ||
21 | _ | ||
22 | _word | ||
23 | _fff | ||
24 | _fff | ||
25 | _fff | ||
26 | _fff | ||
27 | _fff | ||
diff --git a/shell/hush_test/hush-vars/param_expand_assign.tests b/shell/hush_test/hush-vars/param_expand_assign.tests new file mode 100755 index 000000000..1fba556e4 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_assign.tests | |||
@@ -0,0 +1,38 @@ | |||
1 | # first try some invalid patterns (do in subshell due to parsing error) | ||
2 | hush -c 'echo ${=}' | ||
3 | hush -c 'echo ${:=}' | ||
4 | |||
5 | # now some funky ones | ||
6 | hush -c 'echo ${#=}' | ||
7 | hush -c 'echo ${#:=}' | ||
8 | |||
9 | # should error out | ||
10 | hush -c 'set --; echo _${1=}' | ||
11 | hush -c 'set --; echo _${1:=}' | ||
12 | hush -c 'set --; echo _${1=word}' | ||
13 | hush -c 'set --; echo _${1:=word}' | ||
14 | |||
15 | # should not error | ||
16 | hush -c 'set aa; echo _${1=}' | ||
17 | hush -c 'set aa; echo _${1:=}' | ||
18 | hush -c 'set aa; echo _${1=word}' | ||
19 | hush -c 'set aa; echo _${1:=word}' | ||
20 | |||
21 | # should work fine | ||
22 | unset f; echo _$f | ||
23 | unset f; echo _${f=} | ||
24 | unset f; echo _${f:=} | ||
25 | unset f; echo _${f=word} | ||
26 | unset f; echo _${f:=word} | ||
27 | |||
28 | f=; echo _$f | ||
29 | f=; echo _${f=} | ||
30 | f=; echo _${f:=} | ||
31 | f=; echo _${f=word} | ||
32 | f=; echo _${f:=word} | ||
33 | |||
34 | f=fff; echo _$f | ||
35 | f=fff; echo _${f=} | ||
36 | f=fff; echo _${f:=} | ||
37 | f=fff; echo _${f=word} | ||
38 | f=fff; echo _${f:=word} | ||
diff --git a/shell/hush_test/hush-vars/param_expand_default.right b/shell/hush_test/hush-vars/param_expand_default.right new file mode 100644 index 000000000..acc717205 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_default.right | |||
@@ -0,0 +1,8 @@ | |||
1 | hush: syntax error: unterminated ${name} | ||
2 | hush: syntax error: unterminated ${name} | ||
3 | _0 _0 | ||
4 | _ _ _ _word _word | ||
5 | _aaaa _aaaa _aaaa _aaaa _aaaa | ||
6 | _ _ _ _word _word | ||
7 | _ _ _ _ _word | ||
8 | _fff _fff _fff _fff _fff | ||
diff --git a/shell/hush_test/hush-vars/param_expand_default.tests b/shell/hush_test/hush-vars/param_expand_default.tests new file mode 100755 index 000000000..2320ece42 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_default.tests | |||
@@ -0,0 +1,22 @@ | |||
1 | # first try some invalid patterns (do in subshell due to parsing error) | ||
2 | hush -c 'echo ${-}' | ||
3 | hush -c 'echo ${:-}' | ||
4 | |||
5 | # now some funky ones | ||
6 | echo _${#-} _${#:-} | ||
7 | |||
8 | # now some valid ones | ||
9 | set -- | ||
10 | echo _$1 _${1-} _${1:-} _${1-word} _${1:-word} | ||
11 | |||
12 | set -- aaaa | ||
13 | echo _$1 _${1-} _${1:-} _${1-word} _${1:-word} | ||
14 | |||
15 | unset f | ||
16 | echo _$f _${f-} _${f:-} _${f-word} _${f:-word} | ||
17 | |||
18 | f= | ||
19 | echo _$f _${f-} _${f:-} _${f-word} _${f:-word} | ||
20 | |||
21 | f=fff | ||
22 | echo _$f _${f-} _${f:-} _${f-word} _${f:-word} | ||
diff --git a/shell/hush_test/hush-vars/param_expand_indicate_error.right b/shell/hush_test/hush-vars/param_expand_indicate_error.right new file mode 100644 index 000000000..f440f6fae --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_indicate_error.right | |||
@@ -0,0 +1,29 @@ | |||
1 | hush: syntax error: unterminated ${name} | ||
2 | hush: syntax error: unterminated ${name} | ||
3 | 0 | ||
4 | 0 | ||
5 | _ | ||
6 | hush: 1: parameter null or not set | ||
7 | hush: 1: parameter null or not set | ||
8 | hush: 1: word | ||
9 | hush: 1: word | ||
10 | _aaaa | ||
11 | _aaaa | ||
12 | _aaaa | ||
13 | _aaaa | ||
14 | _aaaa | ||
15 | _ | ||
16 | hush: f: parameter null or not set | ||
17 | hush: f: parameter null or not set | ||
18 | hush: f: word | ||
19 | hush: f: word | ||
20 | _ | ||
21 | _ | ||
22 | hush: f: parameter null or not set | ||
23 | _ | ||
24 | hush: f: word | ||
25 | _fff | ||
26 | _fff | ||
27 | _fff | ||
28 | _fff | ||
29 | _fff | ||
diff --git a/shell/hush_test/hush-vars/param_expand_indicate_error.tests b/shell/hush_test/hush-vars/param_expand_indicate_error.tests new file mode 100755 index 000000000..6b431d311 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_indicate_error.tests | |||
@@ -0,0 +1,40 @@ | |||
1 | # do all of these in subshells since it's supposed to error out | ||
2 | |||
3 | # first try some invalid patterns | ||
4 | hush -c 'echo ${?}' | ||
5 | hush -c 'echo ${:?}' | ||
6 | |||
7 | # then some funky ones | ||
8 | hush -c 'echo ${#?}' | ||
9 | hush -c 'echo ${#:?}' | ||
10 | |||
11 | # now some valid ones | ||
12 | hush -c 'set --; echo _$1' | ||
13 | hush -c 'set --; echo _${1?}' | ||
14 | hush -c 'set --; echo _${1:?}' | ||
15 | hush -c 'set --; echo _${1?word}' | ||
16 | hush -c 'set --; echo _${1:?word}' | ||
17 | |||
18 | hush -c 'set -- aaaa; echo _$1' | ||
19 | hush -c 'set -- aaaa; echo _${1?}' | ||
20 | hush -c 'set -- aaaa; echo _${1:?}' | ||
21 | hush -c 'set -- aaaa; echo _${1?word}' | ||
22 | hush -c 'set -- aaaa; echo _${1:?word}' | ||
23 | |||
24 | hush -c 'unset f; echo _$f' | ||
25 | hush -c 'unset f; echo _${f?}' | ||
26 | hush -c 'unset f; echo _${f:?}' | ||
27 | hush -c 'unset f; echo _${f?word}' | ||
28 | hush -c 'unset f; echo _${f:?word}' | ||
29 | |||
30 | hush -c 'f=; echo _$f' | ||
31 | hush -c 'f=; echo _${f?}' | ||
32 | hush -c 'f=; echo _${f:?}' | ||
33 | hush -c 'f=; echo _${f?word}' | ||
34 | hush -c 'f=; echo _${f:?word}' | ||
35 | |||
36 | hush -c 'f=fff; echo _$f' | ||
37 | hush -c 'f=fff; echo _${f?}' | ||
38 | hush -c 'f=fff; echo _${f:?}' | ||
39 | hush -c 'f=fff; echo _${f?word}' | ||
40 | hush -c 'f=fff; echo _${f:?word}' | ||
diff --git a/shell/hush_test/hush-vars/param_expand_len.right b/shell/hush_test/hush-vars/param_expand_len.right new file mode 100644 index 000000000..2d633a148 --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_len.right | |||
@@ -0,0 +1,4 @@ | |||
1 | 0 0 | ||
2 | 4 4 | ||
3 | 4 3 2 1 0 0 | ||
4 | 0 3 0 | ||
diff --git a/shell/hush_test/hush-vars/param_expand_len.tests b/shell/hush_test/hush-vars/param_expand_len.tests new file mode 100755 index 000000000..90f47d2fb --- /dev/null +++ b/shell/hush_test/hush-vars/param_expand_len.tests | |||
@@ -0,0 +1,12 @@ | |||
1 | # make sure len parsing doesnt break arg count | ||
2 | set -- | ||
3 | echo $# ${#} | ||
4 | set -- aaaa bbb cc d | ||
5 | echo $# ${#} | ||
6 | |||
7 | echo ${#1} ${#2} ${#3} ${#4} ${#5} ${#6} | ||
8 | |||
9 | unset e | ||
10 | f=abc | ||
11 | g= | ||
12 | echo ${#e} ${#f} ${#g} | ||