← Commit list

64981b4c8

Denys Vlasenko
Denys Vlasenko
2020-11-01
SUCCESS Duration: 149s

Subject

hush: document bugs in [[ =~ ]] comparison

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

shell/hush_test/hush-bugs/strops5_bug.right+2 -0
@@ -0,0 +1,2 @@
+4:no:1
+5:YES:0
shell/hush_test/hush-bugs/strops5_bug.tests+10 -0
@@ -0,0 +1,10 @@
+v='*.z'
+
+# Buggy:
+# the problem is that expansion rules of LHS and RHS of ~=
+# should not be the same: in RHS, "$v" and "*" should escape metas
+# (currently "$v" does not),
+# but in LHS, they should _not_ do that
+# (currently "*" does). Thus these cases fail:
+[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
+[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*
shell/hush_test/hush-test2/strops5.right+3 -0
@@ -0,0 +1,3 @@
+1:YES:0
+2:no:1
+3:YES:0
shell/hush_test/hush-test2/strops5.tests+13 -0
@@ -0,0 +1,13 @@
+v='*.z'
+[[ a.z = *.z ]]; echo 1:YES:$?
+[[ a.z = "*".z ]]; echo 2:no:$?
+[[ a.z == $v ]]; echo 3:YES:$?
+
+# Buggy:
+# the problem is that expansion rules of LHS and RHS of ~=
+# should not be the same: in RHS, "$v" and "*" should escape metas
+# (currently "$v" does not),
+# but in LHS, they should _not_ do that
+# (currently "*" does). Thus these cases fail:
+#[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
+#[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*