aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_test
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-10-31 03:34:07 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-10-31 03:34:07 +0100
commitd2241f59022c38d4b171e56eea42e216ecccfdd9 (patch)
treeedb75c2530f493c9e3f193f346d8125fe79c107f /shell/hush_test
parent112453acf24520b4655f9f36da41d8ac591b1a60 (diff)
downloadbusybox-w32-d2241f59022c38d4b171e56eea42e216ecccfdd9.tar.gz
busybox-w32-d2241f59022c38d4b171e56eea42e216ecccfdd9.tar.bz2
busybox-w32-d2241f59022c38d4b171e56eea42e216ecccfdd9.zip
shell: better support of [[ ]] bashism
Still rather rudimentary for ash function old new delta binop 433 589 +156 check_operator 65 101 +36 done_word 736 769 +33 test_main 405 418 +13 parse_stream 2227 2238 +11 ops_texts 124 133 +9 ops_table 80 86 +6 run_pipe 1557 1562 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 8/0 up/down: 269/0) Total: 269 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r--shell/hush_test/hush-test2/andor1.right6
-rwxr-xr-xshell/hush_test/hush-test2/andor1.tests7
-rw-r--r--shell/hush_test/hush-test2/noglob1.right2
-rwxr-xr-xshell/hush_test/hush-test2/noglob1.tests3
-rw-r--r--shell/hush_test/hush-test2/strops1.right8
-rwxr-xr-xshell/hush_test/hush-test2/strops1.tests15
-rw-r--r--shell/hush_test/hush-test2/strops2.right6
-rwxr-xr-xshell/hush_test/hush-test2/strops2.tests12
-rw-r--r--shell/hush_test/hush-test2/strops3.right7
-rwxr-xr-xshell/hush_test/hush-test2/strops3.tests13
10 files changed, 79 insertions, 0 deletions
diff --git a/shell/hush_test/hush-test2/andor1.right b/shell/hush_test/hush-test2/andor1.right
new file mode 100644
index 000000000..038c7a681
--- /dev/null
+++ b/shell/hush_test/hush-test2/andor1.right
@@ -0,0 +1,6 @@
11:YES
22:no
33:YES
44:YES
55:no
66:no
diff --git a/shell/hush_test/hush-test2/andor1.tests b/shell/hush_test/hush-test2/andor1.tests
new file mode 100755
index 000000000..c449de7e6
--- /dev/null
+++ b/shell/hush_test/hush-test2/andor1.tests
@@ -0,0 +1,7 @@
1e=''
2[[ a && b ]] && echo 1:YES
3[[ a && '' ]] || echo 2:no
4[[ a || b ]] && echo 3:YES
5[[ '' || b ]] && echo 4:YES
6[[ "" || "$e" ]] || echo 5:no
7[[ "" || $e ]] || echo 6:no
diff --git a/shell/hush_test/hush-test2/noglob1.right b/shell/hush_test/hush-test2/noglob1.right
new file mode 100644
index 000000000..d0c3f1d8e
--- /dev/null
+++ b/shell/hush_test/hush-test2/noglob1.right
@@ -0,0 +1,2 @@
11:YES:0
22:YES:0
diff --git a/shell/hush_test/hush-test2/noglob1.tests b/shell/hush_test/hush-test2/noglob1.tests
new file mode 100755
index 000000000..963bacbd3
--- /dev/null
+++ b/shell/hush_test/hush-test2/noglob1.tests
@@ -0,0 +1,3 @@
1v='*.tests'
2[[ *.tests ]]; echo 1:YES:$?
3[[ $v ]]; echo 2:YES:$?
diff --git a/shell/hush_test/hush-test2/strops1.right b/shell/hush_test/hush-test2/strops1.right
new file mode 100644
index 000000000..590496301
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops1.right
@@ -0,0 +1,8 @@
11:YES:0
22:YES:0
33:YES:0
44:YES:0
55:YES:0
66:YES:0
77:YES:0
88:no:1
diff --git a/shell/hush_test/hush-test2/strops1.tests b/shell/hush_test/hush-test2/strops1.tests
new file mode 100755
index 000000000..bb24e2a2f
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops1.tests
@@ -0,0 +1,15 @@
1v='*.z'
2[[ a.z = *.z ]]; echo 1:YES:$?
3[[ a.z == $v ]]; echo 2:YES:$?
4
5# wildcards can match a slash
6[[ a/b = a*b ]]; echo 3:YES:$?
7[[ a/b == a?b ]]; echo 4:YES:$?
8
9# wildcards can match a leading dot
10[[ a/.b = a/*b ]]; echo 5:YES:$?
11[[ a/.b == a/?b ]]; echo 6:YES:$?
12
13# wildcards can be escaped
14[[ abc = a*c ]]; echo 7:YES:$?
15[[ abc == a\*c ]]; echo 8:no:$?
diff --git a/shell/hush_test/hush-test2/strops2.right b/shell/hush_test/hush-test2/strops2.right
new file mode 100644
index 000000000..8ddb4b0f0
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops2.right
@@ -0,0 +1,6 @@
11:ERR2:2
22:YES:0
33:YES:0
44:YES:0
55:no:1
66:YES:0
diff --git a/shell/hush_test/hush-test2/strops2.tests b/shell/hush_test/hush-test2/strops2.tests
new file mode 100755
index 000000000..ab325bc9f
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops2.tests
@@ -0,0 +1,12 @@
1# malformed regex
2[[ a =~ * ]]; echo 1:ERR2:$?
3
4[[ a/b =~ a.b ]]; echo 2:YES:$?
5[[ a/b =~ /*b ]]; echo 3:YES:$?
6
7v='[]b.-]'
8[[ a/.b] =~ $v ]]; echo 4:YES:$?
9
10v=']b.-'
11[[ a/.b] =~ $v ]]; echo 5:no:$?
12[[ a/.b] =~ [$v] ]]; echo 6:YES:$?
diff --git a/shell/hush_test/hush-test2/strops3.right b/shell/hush_test/hush-test2/strops3.right
new file mode 100644
index 000000000..14cc04fdc
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops3.right
@@ -0,0 +1,7 @@
11:YES:0
22:YES:0
33:no:1
44:YES:0
52u:YES:0
63u:YES:0
74u:YES:0
diff --git a/shell/hush_test/hush-test2/strops3.tests b/shell/hush_test/hush-test2/strops3.tests
new file mode 100755
index 000000000..927476671
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops3.tests
@@ -0,0 +1,13 @@
1# regex should accept '+' operator
2[[ abcdef =~ a[b-z]+ ]]; echo 1:YES:$?
3
4# newline matches by "match any" patterns
5v='
6'
7[[ "$v" =~ . ]]; echo 2:YES:$?
8[[ "$v" =~ "[$v]" ]]; echo 3:no:$? # hmm bash does return 1... why?
9[[ "$v" =~ [^a] ]]; echo 4:YES:$?
10# should work even without quotes:
11[[ $v =~ . ]]; echo 2u:YES:$?
12[[ $v =~ [$v] ]]; echo 3u:YES:$?
13[[ $v =~ [^a] ]]; echo 4u:YES:$?