ash: add a few tests from hush-vars/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
hush: syntax error: unterminated ${name}
|
||||
hush: syntax error: unterminated ${name}
|
||||
__ __
|
||||
_z_ _z_
|
||||
_ _ _ _ _
|
||||
_aaaa _ _ _word _word
|
||||
_ _ _ _ _
|
||||
|
@@ -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 --
|
||||
|
@@ -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
|
||||
|
@@ -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}'
|
||||
|
Reference in New Issue
Block a user