From 4754cba6f3066e60cd4da4b4a9205392be5dea18 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Tue, 23 Jun 2020 00:58:53 -0500 Subject: More sh tests. --- tests/sh.test | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/sh.test b/tests/sh.test index 3dc5e644..4fae2062 100644 --- a/tests/sh.test +++ b/tests/sh.test @@ -314,8 +314,13 @@ testing 'here3' 'abc(){ cat <<< x"$@"yz;};abc one two "three four"' \ testing '${var}' 'X=abcdef; echo ${X}' 'abcdef\n' '' '' testing '${#}' 'X=abcdef; echo ${#X}' "6\n" "" "" -shxpect 'empty ${}' I$'echo ${}; echo hello\n' E I$'echo and\n' O$'and\n' +testing 'empty ${}' '{ echo ${};} 2>&1 | grep -o bad' 'bad\n' '' '' +shxpect 'empty ${} syntax err abort' I$'echo ${}; echo hello\n' \ + E I$'echo and\n' O$'and\n' testing '${$b}' '{ echo ${$b};} 2>&1 | grep -o bad' 'bad\n' '' '' +testing '${!PATH*}' 'echo ${!PATH*}' 'PATH\n' '' '' +testing '${!PATH@}' 'echo ${!PATH@}' 'PATH\n' '' '' +#testing '${!PATH[@]}' 'echo ${!PATH[@]}' '0\n' '' '' testing '${!x}' 'X=abcdef Y=X; echo ${!Y}' 'abcdef\n' '' '' testing '${!x@}' 'ABC=def; def=ghi; echo ${!ABC@}' 'ABC\n' '' '' testing '${!x} err' '{ X=abcdef Y=X:2; echo ${!Y}; echo bang;} 2>/dev/null' \ @@ -337,6 +342,7 @@ testing '${!x@ } no match no err2' 'ABC=def; echo ${!ABC@ }ghi' 'ghi\n' '' '' toyonly testing '${#x::}' 'ABC=abcdefghijklmno; echo ${#ABC:1:2}' '5\n' '' '' # TODO: ${!abc@x} does _not_ error? And ${PWD@q} testing '$""' 'ABC=def; echo $"$ABC"' 'def\n' '' '' +testing '"$""" does not nest' 'echo "$"abc""' '$abc\n' '' '' testing '${\}}' 'ABC=ab}cd; echo ${ABC/\}/x}' 'abxcd\n' '' '' testing 'bad ${^}' '{ echo ${^};} 2>&1 | grep -o bad' 'bad\n' '' '' testing '${:}' 'ABC=def; echo ${ABC:1}' 'ef\n' '' '' @@ -369,13 +375,16 @@ testing '$LINENO 2' $'echo $LINENO\necho $LINENO' '0\n1\n' '' '' testing '$EUID' 'echo $EUID' "$(id -u)\n" '' '' testing '$UID' 'echo $UID' "$(id -ur)\n" '' '' +testing 'readonly leading assignment' \ + '{ readonly abc=123;abc=def echo hello; echo $?;} 2>output; grep -o readonly output' \ + 'hello\n0\nreadonly\n' '' '' +testing 'readonly leading assignment2' \ + 'readonly boink=123; export boink; { boink=234 env | grep ^boink=;} 2>/dev/null; echo $?' 'boink=123\n0\n' '' '' testing 'readonly for' \ 'readonly i; for i in one two three; do echo $i; done 2>/dev/null; echo $?' \ '1\n' '' '' testing 'readonly {}<' \ 'readonly i; echo hello 2>/dev/null {i}/dev/null; echo $?' 'boink=123\n0\n' '' '' testing '$_ 1' 'echo walrus; echo $_' 'walrus\nwalrus\n' '' '' testing '$_ 2' 'unset _; echo $_' '_\n' '' '' -- cgit v1.2.3