aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-11-01 18:47:24 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-11-01 18:47:24 +0100
commit64981b4c8e88812c322bee3832f1d421ff670ed5 (patch)
treed006cbaab733a481ce753a3f900980a78e85badc
parenta7c065354f820560621aa5f2e90498d6636f41c3 (diff)
downloadbusybox-w32-64981b4c8e88812c322bee3832f1d421ff670ed5.tar.gz
busybox-w32-64981b4c8e88812c322bee3832f1d421ff670ed5.tar.bz2
busybox-w32-64981b4c8e88812c322bee3832f1d421ff670ed5.zip
hush: document bugs in [[ =~ ]] comparison
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush_test/hush-bugs/strops5_bug.right2
-rwxr-xr-xshell/hush_test/hush-bugs/strops5_bug.tests10
-rw-r--r--shell/hush_test/hush-test2/strops5.right3
-rwxr-xr-xshell/hush_test/hush-test2/strops5.tests13
4 files changed, 28 insertions, 0 deletions
diff --git a/shell/hush_test/hush-bugs/strops5_bug.right b/shell/hush_test/hush-bugs/strops5_bug.right
new file mode 100644
index 000000000..aba7bb429
--- /dev/null
+++ b/shell/hush_test/hush-bugs/strops5_bug.right
@@ -0,0 +1,2 @@
14:no:1
25:YES:0
diff --git a/shell/hush_test/hush-bugs/strops5_bug.tests b/shell/hush_test/hush-bugs/strops5_bug.tests
new file mode 100755
index 000000000..3e24df768
--- /dev/null
+++ b/shell/hush_test/hush-bugs/strops5_bug.tests
@@ -0,0 +1,10 @@
1v='*.z'
2
3# Buggy:
4# the problem is that expansion rules of LHS and RHS of ~=
5# should not be the same: in RHS, "$v" and "*" should escape metas
6# (currently "$v" does not),
7# but in LHS, they should _not_ do that
8# (currently "*" does). Thus these cases fail:
9[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
10[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*
diff --git a/shell/hush_test/hush-test2/strops5.right b/shell/hush_test/hush-test2/strops5.right
new file mode 100644
index 000000000..9ed4d6569
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops5.right
@@ -0,0 +1,3 @@
11:YES:0
22:no:1
33:YES:0
diff --git a/shell/hush_test/hush-test2/strops5.tests b/shell/hush_test/hush-test2/strops5.tests
new file mode 100755
index 000000000..ee01e5c30
--- /dev/null
+++ b/shell/hush_test/hush-test2/strops5.tests
@@ -0,0 +1,13 @@
1v='*.z'
2[[ a.z = *.z ]]; echo 1:YES:$?
3[[ a.z = "*".z ]]; echo 2:no:$?
4[[ a.z == $v ]]; echo 3:YES:$?
5
6# Buggy:
7# the problem is that expansion rules of LHS and RHS of ~=
8# should not be the same: in RHS, "$v" and "*" should escape metas
9# (currently "$v" does not),
10# but in LHS, they should _not_ do that
11# (currently "*" does). Thus these cases fail:
12#[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
13#[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*