aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_test
diff options
context:
space:
mode:
Diffstat (limited to 'shell/hush_test')
-rw-r--r--shell/hush_test/hush-vars/param_expand_alt.right1
-rwxr-xr-xshell/hush_test/hush-vars/param_expand_alt.tests14
-rwxr-xr-xshell/hush_test/hush-vars/param_expand_assign.tests27
-rwxr-xr-xshell/hush_test/hush-vars/param_expand_bash_substring.tests13
4 files changed, 32 insertions, 23 deletions
diff --git a/shell/hush_test/hush-vars/param_expand_alt.right b/shell/hush_test/hush-vars/param_expand_alt.right
index 67f18d69c..4f9eb2907 100644
--- a/shell/hush_test/hush-vars/param_expand_alt.right
+++ b/shell/hush_test/hush-vars/param_expand_alt.right
@@ -1,6 +1,7 @@
hush: syntax error: unterminated ${name}
hush: syntax error: unterminated ${name}
__ __
+_z_ _z_
_ _ _ _ _
_aaaa _ _ _word _word
_ _ _ _ _
diff --git a/shell/hush_test/hush-vars/param_expand_alt.tests b/shell/hush_test/hush-vars/param_expand_alt.tests
index 3b646b142..c9c4249af 100755
--- a/shell/hush_test/hush-vars/param_expand_alt.tests
+++ b/shell/hush_test/hush-vars/param_expand_alt.tests
@@ -1,9 +1,15 @@
-# first try some invalid patterns (do in subshell due to parsing error)
-"$THIS_SH" -c 'echo ${+} ; echo moo'
-"$THIS_SH" -c 'echo ${:+} ; echo moo'
+# First try some invalid patterns. Do in subshell due to parsing error.
+# (set argv0 to "SHELL" to avoid "/path/to/shell: blah" in error messages)
+"$THIS_SH" -c 'echo ${+} ; echo moo' SHELL
+"$THIS_SH" -c 'echo ${:+} ; echo moo' SHELL
-# now some funky ones. (bash doesn't accept ${#+})
+# now some funky ones.
+# ${V+word} "if V unset, then substitute nothing, else substitute word"
+# ${V:+word} "if V unset or '', then substitute nothing, else substitute word"
+# bash doesn't accept ${#+}. ash prints 0 (not $#).
echo _${#+}_ _${#:+}_
+# Forms with non-empty word work as expected in both ash and bash.
+echo _${#+z}_ _${#:+z}_
# now some valid ones
set --
diff --git a/shell/hush_test/hush-vars/param_expand_assign.tests b/shell/hush_test/hush-vars/param_expand_assign.tests
index 149cb20df..79de95613 100755
--- a/shell/hush_test/hush-vars/param_expand_assign.tests
+++ b/shell/hush_test/hush-vars/param_expand_assign.tests
@@ -1,22 +1,23 @@
-# first try some invalid patterns (do in subshell due to parsing error)
-"$THIS_SH" -c 'echo ${=}'
-"$THIS_SH" -c 'echo ${:=}'
+# First try some invalid patterns. Do in subshell due to parsing error.
+# (set argv0 to "SHELL" to avoid "/path/to/shell: blah" in error messages)
+"$THIS_SH" -c 'echo ${=}' SHELL
+"$THIS_SH" -c 'echo ${:=}' SHELL
# now some funky ones
-"$THIS_SH" -c 'echo ${#=}'
-"$THIS_SH" -c 'echo ${#:=}'
+"$THIS_SH" -c 'echo ${#=}' SHELL
+"$THIS_SH" -c 'echo ${#:=}' SHELL
# should error out
-"$THIS_SH" -c 'set --; echo _${1=}'
-"$THIS_SH" -c 'set --; echo _${1:=}'
-"$THIS_SH" -c 'set --; echo _${1=word}'
-"$THIS_SH" -c 'set --; echo _${1:=word}'
+"$THIS_SH" -c 'set --; echo _${1=}' SHELL
+"$THIS_SH" -c 'set --; echo _${1:=}' SHELL
+"$THIS_SH" -c 'set --; echo _${1=word}' SHELL
+"$THIS_SH" -c 'set --; echo _${1:=word}' SHELL
# should not error
-"$THIS_SH" -c 'set aa; echo _${1=}'
-"$THIS_SH" -c 'set aa; echo _${1:=}'
-"$THIS_SH" -c 'set aa; echo _${1=word}'
-"$THIS_SH" -c 'set aa; echo _${1:=word}'
+"$THIS_SH" -c 'set aa; echo _${1=}' SHELL
+"$THIS_SH" -c 'set aa; echo _${1:=}' SHELL
+"$THIS_SH" -c 'set aa; echo _${1=word}' SHELL
+"$THIS_SH" -c 'set aa; echo _${1:=word}' SHELL
# should work fine
unset f; echo _$f
diff --git a/shell/hush_test/hush-vars/param_expand_bash_substring.tests b/shell/hush_test/hush-vars/param_expand_bash_substring.tests
index 5c9552dba..cce9f123e 100755
--- a/shell/hush_test/hush-vars/param_expand_bash_substring.tests
+++ b/shell/hush_test/hush-vars/param_expand_bash_substring.tests
@@ -1,13 +1,14 @@
# first try some invalid patterns
# do all of these in subshells since it's supposed to error out
+# (set argv0 to "SHELL" to avoid "/path/to/shell: blah" in error messages)
export var=0123456789
-"$THIS_SH" -c 'echo ${:}'
-"$THIS_SH" -c 'echo ${::}'
-"$THIS_SH" -c 'echo ${:1}'
-"$THIS_SH" -c 'echo ${::1}'
+"$THIS_SH" -c 'echo ${:}' SHELL
+"$THIS_SH" -c 'echo ${::}' SHELL
+"$THIS_SH" -c 'echo ${:1}' SHELL
+"$THIS_SH" -c 'echo ${::1}' SHELL
-#this also is not valid in bash, but we accept it:
-"$THIS_SH" -c 'echo ${var:}'
+#this also is not valid in bash, hush accepts it:
+"$THIS_SH" -c 'echo ${var:}' SHELL
# then some funky ones
# UNFIXED BUG: this should work: "$THIS_SH" -c 'echo ${?:0}'