ash: add a few tests from hush-vars/*
No binary (build failed)
—
(log yok)
| @@ -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 |
| @@ -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} |
| @@ -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 |
| @@ -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} |
| @@ -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 |
| @@ -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}' | |