aboutsummaryrefslogtreecommitdiff
path: root/shell/ash_test/ash-vars
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-10-03 00:06:55 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-10-03 00:06:55 +0200
commita62bc80571eae6d286aed9a92d47dc42318a8146 (patch)
tree45ce124c7a8426ebf95c07a34c3c521595e400de /shell/ash_test/ash-vars
parentce332a23a3ff45a5aeb3e737da15b469badd5d12 (diff)
downloadbusybox-w32-a62bc80571eae6d286aed9a92d47dc42318a8146.tar.gz
busybox-w32-a62bc80571eae6d286aed9a92d47dc42318a8146.tar.bz2
busybox-w32-a62bc80571eae6d286aed9a92d47dc42318a8146.zip
ash testsuite: add most of hust tests which pass for ash
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash_test/ash-vars')
-rw-r--r--shell/ash_test/ash-vars/empty.right3
-rwxr-xr-xshell/ash_test/ash-vars/empty.tests5
-rw-r--r--shell/ash_test/ash-vars/glob_and_vars.right1
-rwxr-xr-xshell/ash_test/ash-vars/glob_and_vars.tests2
-rw-r--r--shell/ash_test/ash-vars/param_expand_len.right9
-rwxr-xr-xshell/ash_test/ash-vars/param_expand_len.tests17
-rw-r--r--shell/ash_test/ash-vars/param_glob.right4
-rwxr-xr-xshell/ash_test/ash-vars/param_glob.tests9
-rw-r--r--shell/ash_test/ash-vars/param_subshell.right7
-rwxr-xr-xshell/ash_test/ash-vars/param_subshell.tests15
-rw-r--r--shell/ash_test/ash-vars/star.right6
-rwxr-xr-xshell/ash_test/ash-vars/star.tests8
-rw-r--r--shell/ash_test/ash-vars/var_expand_in_assign.right5
-rwxr-xr-xshell/ash_test/ash-vars/var_expand_in_assign.tests15
-rw-r--r--shell/ash_test/ash-vars/var_expand_in_redir.right3
-rwxr-xr-xshell/ash_test/ash-vars/var_expand_in_redir.tests13
-rw-r--r--shell/ash_test/ash-vars/var_expand_on_ifs.right9
-rwxr-xr-xshell/ash_test/ash-vars/var_expand_on_ifs.tests11
-rw-r--r--shell/ash_test/ash-vars/var_in_pipes.right6
-rwxr-xr-xshell/ash_test/ash-vars/var_in_pipes.tests7
-rw-r--r--shell/ash_test/ash-vars/var_leaks.right1
-rwxr-xr-xshell/ash_test/ash-vars/var_leaks.tests14
22 files changed, 170 insertions, 0 deletions
diff --git a/shell/ash_test/ash-vars/empty.right b/shell/ash_test/ash-vars/empty.right
new file mode 100644
index 000000000..2cb3c70f2
--- /dev/null
+++ b/shell/ash_test/ash-vars/empty.right
@@ -0,0 +1,3 @@
1a b c d e f 1 2 3 4 5 6 7 8 9 0 A B C D E F
2a b c d e f 1 2 3 4 5 6 7 8 9 0 A B C D E F
3a b c d e f 1 2 3 4 5 6 7 8 9 0 A B C D E F
diff --git a/shell/ash_test/ash-vars/empty.tests b/shell/ash_test/ash-vars/empty.tests
new file mode 100755
index 000000000..a9c247e31
--- /dev/null
+++ b/shell/ash_test/ash-vars/empty.tests
@@ -0,0 +1,5 @@
1e=
2
3echo a b c d e f 1 2 3 4 5 6 7 8 9 0 A B C D E F
4echo a $e b $e c $e d $e e $e f $e 1 $e 2 $e 3 $e 4 $e 5 $e 6 $e 7 $e 8 $e 9 $e 0 $e A $e B $e C $e D $e E $e F
5echo $e a $e b $e c $e d $e e $e f $e 1 $e 2 $e 3 $e 4 $e 5 $e 6 $e 7 $e 8 $e 9 $e 0 $e A $e B $e C $e D $e E $e F
diff --git a/shell/ash_test/ash-vars/glob_and_vars.right b/shell/ash_test/ash-vars/glob_and_vars.right
new file mode 100644
index 000000000..3ac7ec5ff
--- /dev/null
+++ b/shell/ash_test/ash-vars/glob_and_vars.right
@@ -0,0 +1 @@
./glob_and_vars.right ./glob_and_vars.tests
diff --git a/shell/ash_test/ash-vars/glob_and_vars.tests b/shell/ash_test/ash-vars/glob_and_vars.tests
new file mode 100755
index 000000000..482cf9d8a
--- /dev/null
+++ b/shell/ash_test/ash-vars/glob_and_vars.tests
@@ -0,0 +1,2 @@
1v=.
2echo $v/glob_and_vars.[tr]*
diff --git a/shell/ash_test/ash-vars/param_expand_len.right b/shell/ash_test/ash-vars/param_expand_len.right
new file mode 100644
index 000000000..96e8cb59b
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_expand_len.right
@@ -0,0 +1,9 @@
10
20
31
4Make sure len parsing doesnt break arg count
50 0
64 4
7Testing len op
84 3 2 1 0 0
90 3 0
diff --git a/shell/ash_test/ash-vars/param_expand_len.tests b/shell/ash_test/ash-vars/param_expand_len.tests
new file mode 100755
index 000000000..fe20a45e9
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_expand_len.tests
@@ -0,0 +1,17 @@
1"$THIS_SH" -c 'echo $#'
2"$THIS_SH" -c 'echo $#' arg0
3"$THIS_SH" -c 'echo $#' arg0 arg1
4
5echo Make sure len parsing doesnt break arg count
6set --
7echo $# ${#}
8set -- aaaa bbb cc d
9echo $# ${#}
10
11echo Testing len op
12echo ${#1} ${#2} ${#3} ${#4} ${#5} ${#6}
13
14unset e
15f=abc
16g=
17echo ${#e} ${#f} ${#g}
diff --git a/shell/ash_test/ash-vars/param_glob.right b/shell/ash_test/ash-vars/param_glob.right
new file mode 100644
index 000000000..bdee8fe0f
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_glob.right
@@ -0,0 +1,4 @@
1param_glob.tests
2param_glob.tests
3param_glob.t*
4param_glob.t*
diff --git a/shell/ash_test/ash-vars/param_glob.tests b/shell/ash_test/ash-vars/param_glob.tests
new file mode 100755
index 000000000..4d74fee02
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_glob.tests
@@ -0,0 +1,9 @@
1if test $# = 0; then
2 exec "$THIS_SH" "$0" 'param_glob.t*'
3 echo NOT SHOWN
4 exit
5fi
6echo $*
7echo $@
8echo "$*"
9echo "$@"
diff --git a/shell/ash_test/ash-vars/param_subshell.right b/shell/ash_test/ash-vars/param_subshell.right
new file mode 100644
index 000000000..f3c3767de
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_subshell.right
@@ -0,0 +1,7 @@
11=1
22=2
33=3
44=4
55=5
66=6
77=7
diff --git a/shell/ash_test/ash-vars/param_subshell.tests b/shell/ash_test/ash-vars/param_subshell.tests
new file mode 100755
index 000000000..27fdc5b9b
--- /dev/null
+++ b/shell/ash_test/ash-vars/param_subshell.tests
@@ -0,0 +1,15 @@
1if test $# = 0; then
2 "$THIS_SH" "$0" 1 2 3 4 5 6 7 8 9
3 exit
4fi
5echo 1=$1
6{ echo 2=$2; }
7{ echo 3=$3; } &
8# cant use usleep as it isnt standard in $PATH --
9# we fail when testing busybox compiled solely as "hush"
10wait
11( echo 4=$4 )
12( echo 5=$5 ) &
13wait
14true | echo 6=$6 | cat
15true | { echo 7=$7; } | cat
diff --git a/shell/ash_test/ash-vars/star.right b/shell/ash_test/ash-vars/star.right
new file mode 100644
index 000000000..0ecc55bc2
--- /dev/null
+++ b/shell/ash_test/ash-vars/star.right
@@ -0,0 +1,6 @@
1.1.
2.abc.
3.d.
4.e.
5.f.
6.1 abc d e f.
diff --git a/shell/ash_test/ash-vars/star.tests b/shell/ash_test/ash-vars/star.tests
new file mode 100755
index 000000000..5554c4090
--- /dev/null
+++ b/shell/ash_test/ash-vars/star.tests
@@ -0,0 +1,8 @@
1if test $# = 0; then
2 exec "$THIS_SH" star.tests 1 abc 'd e f'
3fi
4# 'd e f' should be split into 3 separate args:
5for a in $*; do echo ".$a."; done
6
7# must produce .1 abc d e f.
8for a in "$*"; do echo ".$a."; done
diff --git a/shell/ash_test/ash-vars/var_expand_in_assign.right b/shell/ash_test/ash-vars/var_expand_in_assign.right
new file mode 100644
index 000000000..352210d7e
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_in_assign.right
@@ -0,0 +1,5 @@
1. .
2.abc d e.
3.abc d e.
4.abc d e.
5.abc d e.
diff --git a/shell/ash_test/ash-vars/var_expand_in_assign.tests b/shell/ash_test/ash-vars/var_expand_in_assign.tests
new file mode 100755
index 000000000..18cdc74c0
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_in_assign.tests
@@ -0,0 +1,15 @@
1if test $# = 0; then
2 exec "$THIS_SH" "$0" abc "d e"
3fi
4
5space=' '
6echo .$space.
7
8a=$*
9echo .$a.
10a=$@
11echo .$a.
12a="$*"
13echo .$a.
14a="$@"
15echo .$a.
diff --git a/shell/ash_test/ash-vars/var_expand_in_redir.right b/shell/ash_test/ash-vars/var_expand_in_redir.right
new file mode 100644
index 000000000..423299c97
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_in_redir.right
@@ -0,0 +1,3 @@
1TEST1
2TEST2
3TEST3
diff --git a/shell/ash_test/ash-vars/var_expand_in_redir.tests b/shell/ash_test/ash-vars/var_expand_in_redir.tests
new file mode 100755
index 000000000..bda6bdd7f
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_in_redir.tests
@@ -0,0 +1,13 @@
1if test $# = 0; then
2 exec "$THIS_SH" "$0" abc "d e"
3fi
4
5echo TEST1 >"$1.out"
6echo TEST2 >"$2.out"
7# bash says: "$@.out": ambiguous redirect
8# ash handles it as if it is '$*' - we do the same
9echo TEST3 >"$@.out"
10
11cat abc.out "d e.out" "abc d e.out"
12
13rm abc.out "d e.out" "abc d e.out"
diff --git a/shell/ash_test/ash-vars/var_expand_on_ifs.right b/shell/ash_test/ash-vars/var_expand_on_ifs.right
new file mode 100644
index 000000000..2ed2069f7
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_on_ifs.right
@@ -0,0 +1,9 @@
11 a b c
22 a + b c
33 a b c
44 a b c
55 a b c
66 a b + c
77 a b c
88 a b c
99 a b c
diff --git a/shell/ash_test/ash-vars/var_expand_on_ifs.tests b/shell/ash_test/ash-vars/var_expand_on_ifs.tests
new file mode 100755
index 000000000..a12ff8ec8
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_expand_on_ifs.tests
@@ -0,0 +1,11 @@
1b=' b '
2e=''
3echo 1 a $b c
4echo 2 a +$b c
5echo 3 a $e$b c
6echo 4 a "$e"$b c
7echo 5 a ""$b c
8echo 6 a $b+ c
9echo 7 a $b$e c
10echo 8 a $b"$e" c
11echo 9 a $b"" c
diff --git a/shell/ash_test/ash-vars/var_in_pipes.right b/shell/ash_test/ash-vars/var_in_pipes.right
new file mode 100644
index 000000000..faf65bed4
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_in_pipes.right
@@ -0,0 +1,6 @@
1b=1
2b=2
3b=3
4b=4
5b=5
6b=6
diff --git a/shell/ash_test/ash-vars/var_in_pipes.tests b/shell/ash_test/ash-vars/var_in_pipes.tests
new file mode 100755
index 000000000..3f8cd2729
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_in_pipes.tests
@@ -0,0 +1,7 @@
1b=1 env | grep ^b=
2true | b=2 env | grep ^b=
3a=1 true | b=3 env | grep ^b=
4
5(b=4 env) | grep ^b=
6(true | b=5 env) | grep ^b=
7(a=1 true | b=6 env) | grep ^b=
diff --git a/shell/ash_test/ash-vars/var_leaks.right b/shell/ash_test/ash-vars/var_leaks.right
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_leaks.right
@@ -0,0 +1 @@
OK
diff --git a/shell/ash_test/ash-vars/var_leaks.tests b/shell/ash_test/ash-vars/var_leaks.tests
new file mode 100755
index 000000000..27c8c6504
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_leaks.tests
@@ -0,0 +1,14 @@
1# external program
2a=b /bin/true
3env | grep ^a=
4
5# builtin
6a=b true
7env | grep ^a=
8
9# exec with redirection only
10# in bash, this leaks!
11a=b exec 1>&1
12env | grep ^a=
13
14echo OK