ash: add a few tests from hush-vars/*
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
73c47f6c41
commit
64925384c9
9
shell/ash_test/ash-vars/param_expand_alt.right
Normal file
9
shell/ash_test/ash-vars/param_expand_alt.right
Normal file
@ -0,0 +1,9 @@
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
_0_ __
|
||||
_z_ _z_
|
||||
_ _ _ _ _
|
||||
_aaaa _ _ _word _word
|
||||
_ _ _ _ _
|
||||
_ _ _ _word _
|
||||
_fff _ _ _word _word
|
28
shell/ash_test/ash-vars/param_expand_alt.tests
Executable file
28
shell/ash_test/ash-vars/param_expand_alt.tests
Executable file
@ -0,0 +1,28 @@
|
||||
# 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.
|
||||
# ${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 --
|
||||
echo _$1 _${1+} _${1:+} _${1+word} _${1:+word}
|
||||
|
||||
set -- aaaa
|
||||
echo _$1 _${1+} _${1:+} _${1+word} _${1:+word}
|
||||
|
||||
unset f
|
||||
echo _$f _${f+} _${f:+} _${f+word} _${f:+word}
|
||||
|
||||
f=
|
||||
echo _$f _${f+} _${f:+} _${f+word} _${f:+word}
|
||||
|
||||
f=fff
|
||||
echo _$f _${f+} _${f:+} _${f+word} _${f:+word}
|
27
shell/ash_test/ash-vars/param_expand_assign.right
Normal file
27
shell/ash_test/ash-vars/param_expand_assign.right
Normal file
@ -0,0 +1,27 @@
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
0
|
||||
0
|
||||
SHELL: line 1: 1: bad variable name
|
||||
SHELL: line 1: 1: bad variable name
|
||||
SHELL: line 1: 1: bad variable name
|
||||
SHELL: line 1: 1: bad variable name
|
||||
_aa
|
||||
_aa
|
||||
_aa
|
||||
_aa
|
||||
_
|
||||
_
|
||||
_
|
||||
_word
|
||||
_word
|
||||
_
|
||||
_
|
||||
_
|
||||
_
|
||||
_word
|
||||
_fff
|
||||
_fff
|
||||
_fff
|
||||
_fff
|
||||
_fff
|
39
shell/ash_test/ash-vars/param_expand_assign.tests
Executable file
39
shell/ash_test/ash-vars/param_expand_assign.tests
Executable file
@ -0,0 +1,39 @@
|
||||
# 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 ${#=}' SHELL
|
||||
"$THIS_SH" -c 'echo ${#:=}' SHELL
|
||||
|
||||
# should error out
|
||||
"$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=}' 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
|
||||
unset f; echo _${f=}
|
||||
unset f; echo _${f:=}
|
||||
unset f; echo _${f=word}
|
||||
unset f; echo _${f:=word}
|
||||
|
||||
f=; echo _$f
|
||||
f=; echo _${f=}
|
||||
f=; echo _${f:=}
|
||||
f=; echo _${f=word}
|
||||
f=; echo _${f:=word}
|
||||
|
||||
f=fff; echo _$f
|
||||
f=fff; echo _${f=}
|
||||
f=fff; echo _${f:=}
|
||||
f=fff; echo _${f=word}
|
||||
f=fff; echo _${f:=word}
|
64
shell/ash_test/ash-vars/param_expand_bash_substring.right
Normal file
64
shell/ash_test/ash-vars/param_expand_bash_substring.right
Normal file
@ -0,0 +1,64 @@
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: bad substitution
|
||||
SHELL: line 1: syntax error: missing '}'
|
||||
1 =||
|
||||
1:1 =||
|
||||
1:1:2=||
|
||||
1::2 =||
|
||||
1:1: =||
|
||||
1:: =||
|
||||
1 =|0123|
|
||||
1:1 =|123|
|
||||
1:1:2=|12|
|
||||
1::2 =|01|
|
||||
1:1: =||
|
||||
1:: =||
|
||||
f =||
|
||||
f:1 =||
|
||||
f:1:2=||
|
||||
f::2 =||
|
||||
f:1: =||
|
||||
f:: =||
|
||||
f =||
|
||||
f:1 =||
|
||||
f:1:2=||
|
||||
f::2 =||
|
||||
f:1: =||
|
||||
f:: =||
|
||||
f =|a|
|
||||
f:1 =||
|
||||
f:1:2=||
|
||||
f::2 =|a|
|
||||
f:1: =||
|
||||
f:: =||
|
||||
f =|0123456789|
|
||||
f:1 =|123456789|
|
||||
f:1:2=|12|
|
||||
f::2 =|01|
|
||||
f:1: =||
|
||||
f:: =||
|
||||
Substrings from special vars
|
||||
? =|0|
|
||||
?:1 =||
|
||||
?:1:2=||
|
||||
?::2 =|0|
|
||||
?:1: =||
|
||||
?:: =||
|
||||
# =|11|
|
||||
#:1 =|1|
|
||||
#:1:2=|1|
|
||||
#::2 =|11|
|
||||
#:1: =||
|
||||
#:: =||
|
||||
Substrings with expressions
|
||||
f =|01234567|
|
||||
f:1+1:2+2 =|2345|
|
||||
f:-1:2+2 =|01234567|
|
||||
f:1:f =|1234567|
|
||||
f:1:$f =|1234567|
|
||||
f:1:${f} =|1234567|
|
||||
f:1:${f:3:1} =|123|
|
||||
f:1:1`echo 1`=|1|
|
||||
Done
|
84
shell/ash_test/ash-vars/param_expand_bash_substring.tests
Executable file
84
shell/ash_test/ash-vars/param_expand_bash_substring.tests
Executable file
@ -0,0 +1,84 @@
|
||||
# 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 ${:}' 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, hush accepts it:
|
||||
"$THIS_SH" -c 'echo ${var:}' SHELL
|
||||
|
||||
# then some funky ones
|
||||
# UNFIXED BUG: this should work: "$THIS_SH" -c 'echo ${?:0}'
|
||||
|
||||
# now some valid ones
|
||||
set --; echo "1 =|${1}|"
|
||||
set --; echo "1:1 =|${1:1}|"
|
||||
set --; echo "1:1:2=|${1:1:2}|"
|
||||
set --; echo "1::2 =|${1::2}|"
|
||||
set --; echo "1:1: =|${1:1:}|"
|
||||
set --; echo "1:: =|${1::}|"
|
||||
|
||||
set -- 0123; echo "1 =|${1}|"
|
||||
set -- 0123; echo "1:1 =|${1:1}|"
|
||||
set -- 0123; echo "1:1:2=|${1:1:2}|"
|
||||
set -- 0123; echo "1::2 =|${1::2}|"
|
||||
set -- 0123; echo "1:1: =|${1:1:}|"
|
||||
set -- 0123; echo "1:: =|${1::}|"
|
||||
|
||||
unset f; echo "f =|$f|"
|
||||
unset f; echo "f:1 =|${f:1}|"
|
||||
unset f; echo "f:1:2=|${f:1:2}|"
|
||||
unset f; echo "f::2 =|${f::2}|"
|
||||
unset f; echo "f:1: =|${f:1:}|"
|
||||
unset f; echo "f:: =|${f::}|"
|
||||
|
||||
f=; echo "f =|$f|"
|
||||
f=; echo "f:1 =|${f:1}|"
|
||||
f=; echo "f:1:2=|${f:1:2}|"
|
||||
f=; echo "f::2 =|${f::2}|"
|
||||
f=; echo "f:1: =|${f:1:}|"
|
||||
f=; echo "f:: =|${f::}|"
|
||||
|
||||
f=a; echo "f =|$f|"
|
||||
f=a; echo "f:1 =|${f:1}|"
|
||||
f=a; echo "f:1:2=|${f:1:2}|"
|
||||
f=a; echo "f::2 =|${f::2}|"
|
||||
f=a; echo "f:1: =|${f:1:}|"
|
||||
f=a; echo "f:: =|${f::}|"
|
||||
|
||||
f=0123456789; echo "f =|$f|"
|
||||
f=0123456789; echo "f:1 =|${f:1}|"
|
||||
f=0123456789; echo "f:1:2=|${f:1:2}|"
|
||||
f=0123456789; echo "f::2 =|${f::2}|"
|
||||
f=0123456789; echo "f:1: =|${f:1:}|"
|
||||
f=0123456789; echo "f:: =|${f::}|"
|
||||
|
||||
echo "Substrings from special vars"
|
||||
echo '? '"=|$?|"
|
||||
echo '?:1 '"=|${?:1}|"
|
||||
echo '?:1:2'"=|${?:1:2}|"
|
||||
echo '?::2 '"=|${?::2}|"
|
||||
echo '?:1: '"=|${?:1:}|"
|
||||
echo '?:: '"=|${?::}|"
|
||||
set -- 1 2 3 4 5 6 7 8 9 10 11
|
||||
echo '# '"=|$#|"
|
||||
echo '#:1 '"=|${#:1}|"
|
||||
echo '#:1:2'"=|${#:1:2}|"
|
||||
echo '#::2 '"=|${#::2}|"
|
||||
echo '#:1: '"=|${#:1:}|"
|
||||
echo '#:: '"=|${#::}|"
|
||||
|
||||
echo "Substrings with expressions"
|
||||
f=01234567; echo 'f '"=|$f|"
|
||||
f=01234567; echo 'f:1+1:2+2 '"=|${f:1+1:2+2}|"
|
||||
f=01234567; echo 'f:-1:2+2 '"=|${f:-1:2+2}|"
|
||||
f=01234567; echo 'f:1:f '"=|${f:1:f}|"
|
||||
f=01234567; echo 'f:1:$f '"=|${f:1:$f}|"
|
||||
f=01234567; echo 'f:1:${f} '"=|${f:1:${f}}|"
|
||||
f=01234567; echo 'f:1:${f:3:1} '"=|${f:1:${f:3:1}}|"
|
||||
f=01234567; echo 'f:1:1`echo 1`'"=|${f:1:`echo 1`}|"
|
||||
|
||||
echo Done
|
@ -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}'
|
||||
|
Loading…
Reference in New Issue
Block a user