diff options
Diffstat (limited to 'shell/hush_test')
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}' |