diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-07-20 17:36:06 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-07-20 17:36:06 +0200 |
commit | 83e434d5b56baccf617ebcc8a752959f7c4aacfc (patch) | |
tree | 46a311ce40ba3f2e444d6cbf0c306351393498bf /shell/hush_test | |
parent | 294eb4612cd668521faa48711297196f00af61d9 (diff) | |
download | busybox-83e434d5b56baccf617ebcc8a752959f7c4aacfc.tar.gz |
hush: fix handling of '' in ${var:+ARG}
This wasn't an ash bug in dollar_altvalue9, it was hush bug (and bash!)
function old new delta
expand_one_var 2236 2254 +18
expand_vars_to_list 1097 1103 +6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 24/0) Total: 24 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-quoting/dollar_altvalue2.right | 69 | ||||
-rwxr-xr-x | shell/hush_test/hush-quoting/dollar_altvalue2.tests | 33 | ||||
-rw-r--r-- | shell/hush_test/hush-quoting/dollar_altvalue9.right | 2 |
3 files changed, 104 insertions, 0 deletions
diff --git a/shell/hush_test/hush-quoting/dollar_altvalue2.right b/shell/hush_test/hush-quoting/dollar_altvalue2.right new file mode 100644 index 000000000..7cf37e379 --- /dev/null +++ b/shell/hush_test/hush-quoting/dollar_altvalue2.right @@ -0,0 +1,69 @@ +Unquoted '': +start: +|| +end +start: +|| +end +start: +|| +end +start: +|| +end +start: +|| +|| +end + +Unquoted "": +start: +|| +end +start: +|| +end +start: +|| +end +start: +|| +end +start: +|| +|| +end + +Quoted '': +start: +|''| +end +start: +|'' | +end +start: +| ''| +end +start: +| '' | +end +start: +|'' ''| +end + +Quoted "": +start: +|| +end +start: +| | +end +start: +| | +end +start: +| | +end +start: +| | +end diff --git a/shell/hush_test/hush-quoting/dollar_altvalue2.tests b/shell/hush_test/hush-quoting/dollar_altvalue2.tests new file mode 100755 index 000000000..3377eb27f --- /dev/null +++ b/shell/hush_test/hush-quoting/dollar_altvalue2.tests @@ -0,0 +1,33 @@ +f() { echo start:; for i; do echo "|$i|"; done; echo end; } +x=a + +echo "Unquoted '':" +f ${x:+''} +f ${x:+'' } +f ${x:+ ''} +f ${x:+ '' } +f ${x:+'' ''} + +echo +echo 'Unquoted "":' +f ${x:+""} +f ${x:+"" } +f ${x:+ ""} +f ${x:+ "" } +f ${x:+"" ""} + +echo +echo "Quoted '':" +f "${x:+''}" +f "${x:+'' }" +f "${x:+ ''}" +f "${x:+ '' }" +f "${x:+'' ''}" + +echo +echo 'Quoted "":' +f "${x:+""}" +f "${x:+"" }" +f "${x:+ ""}" +f "${x:+ "" }" +f "${x:+"" ""}" diff --git a/shell/hush_test/hush-quoting/dollar_altvalue9.right b/shell/hush_test/hush-quoting/dollar_altvalue9.right index fc6c2697c..39342fe7c 100644 --- a/shell/hush_test/hush-quoting/dollar_altvalue9.right +++ b/shell/hush_test/hush-quoting/dollar_altvalue9.right @@ -3,6 +3,7 @@ Unquoted 1: |x y| |1| |2| +|| |1 2| |A| |B| @@ -14,6 +15,7 @@ Unquoted 2: |ax y| |1| |2| +|| |1 2| |A| |B| |