From 83e434d5b56baccf617ebcc8a752959f7c4aacfc Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 20 Jul 2018 17:36:06 +0200 Subject: 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 --- shell/ash_test/ash-quoting/dollar_altvalue2.right | 69 +++++++++++++++++++++++ shell/ash_test/ash-quoting/dollar_altvalue2.tests | 33 +++++++++++ shell/ash_test/ash-quoting/dollar_altvalue9.right | 2 + 3 files changed, 104 insertions(+) create mode 100644 shell/ash_test/ash-quoting/dollar_altvalue2.right create mode 100755 shell/ash_test/ash-quoting/dollar_altvalue2.tests (limited to 'shell/ash_test') diff --git a/shell/ash_test/ash-quoting/dollar_altvalue2.right b/shell/ash_test/ash-quoting/dollar_altvalue2.right new file mode 100644 index 000000000..7cf37e379 --- /dev/null +++ b/shell/ash_test/ash-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/ash_test/ash-quoting/dollar_altvalue2.tests b/shell/ash_test/ash-quoting/dollar_altvalue2.tests new file mode 100755 index 000000000..3377eb27f --- /dev/null +++ b/shell/ash_test/ash-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/ash_test/ash-quoting/dollar_altvalue9.right b/shell/ash_test/ash-quoting/dollar_altvalue9.right index fc6c2697c..39342fe7c 100644 --- a/shell/ash_test/ash-quoting/dollar_altvalue9.right +++ b/shell/ash_test/ash-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| -- cgit v1.2.3