shell/ash_test/ash-parsing/argv0.right+1 -0
shell/ash_test/ash-parsing/argv0.tests+4 -0
| @@ -0,0 +1,4 @@ |
| + | if test $# = 0; then |
| + | exec "$THIS_SH" "$0" arg |
| + | fi |
| + | echo OK |
shell/ash_test/ash-parsing/brace1.right+7 -0
| @@ -0,0 +1,7 @@ |
| + | {abc} |
| + | { |
| + | } |
| + | ./brace1.tests: line 4: {cmd: not found |
| + | ./brace1.tests: line 5: {: not found |
| + | ./brace1.tests: line 6: {: not found |
| + | Done: 127 |
shell/ash_test/ash-parsing/brace1.tests+7 -0
| @@ -0,0 +1,7 @@ |
| + | echo {abc} |
| + | echo { |
| + | echo } |
| + | {cmd |
| + | ""{ |
| + | {"" |
| + | echo Done: $? |
shell/ash_test/ash-parsing/brace2.right+3 -0
| @@ -0,0 +1,3 @@ |
| + | {q,w} |
| + | {q,w} |
| + | Done |
shell/ash_test/ash-parsing/brace2.tests+5 -0
| @@ -0,0 +1,5 @@ |
| + | v='{q,w}' |
| + | # Should not brace-expand v value |
| + | echo $v |
| + | echo "$v" |
| + | echo Done |
shell/ash_test/ash-parsing/comment1.right+2 -0
| @@ -0,0 +1,2 @@ |
| + | Nothing: |
| + | String: #should-be-echoed |
shell/ash_test/ash-parsing/comment1.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | echo Nothing: #should-not-be-echoed |
| + | echo String: ""#should-be-echoed |
shell/ash_test/ash-parsing/eol1.right+1 -0
shell/ash_test/ash-parsing/eol1.tests+18 -0
| @@ -0,0 +1,18 @@ |
| + | # bug was that we treated <newline> as ';' in this line: |
| + | true || echo foo | |
| + | echo BAD1 | cat |
| + | |
| + | # variation on the same theme |
| + | true || echo foo | |
| + | # comment |
| + | echo BAD2 | cat |
| + | |
| + | # variation on the same theme |
| + | true || echo foo | |
| + | |
| + | echo BAD3 | cat |
| + | |
| + | # this should error out, but currently works in hush: |
| + | #true || echo foo |; |
| + | |
| + | echo Done:$? |
shell/ash_test/ash-parsing/escape1.right+4 -0
| @@ -0,0 +1,4 @@ |
| + | \ |
| + | a\b |
| + | \\ |
| + | c\\d |
shell/ash_test/ash-parsing/escape1.tests+6 -0
| @@ -0,0 +1,6 @@ |
| + | test "$CONFIG_FEATURE_FANCY_ECHO" = "y" || exit 77 |
| + | |
| + | echo "\\" |
| + | echo a"\\"b |
| + | echo '\\' |
| + | echo c'\\'d |
shell/ash_test/ash-parsing/escape2.right+4 -0
| @@ -0,0 +1,4 @@ |
| + | *?[a]* |
| + | a*?[a]*b |
| + | *?[a]* |
| + | c*?[a]*d |
shell/ash_test/ash-parsing/escape2.tests+4 -0
| @@ -0,0 +1,4 @@ |
| + | echo "*?[a]*" |
| + | echo a"*?[a]*"b |
| + | echo '*?[a]*' |
| + | echo c'*?[a]*'d |
shell/ash_test/ash-parsing/escape3.right+23 -0
| @@ -0,0 +1,23 @@ |
| + | v: a \ b \\ c \\\ d \\\\ e |
| + | v: a \ b \\ c \\\ d \\\\ e |
| + | Unquoted: |
| + | .a. |
| + | .\. |
| + | .b. |
| + | .\\. |
| + | .c. |
| + | .\\\. |
| + | .d. |
| + | .\\\\. |
| + | .e. |
| + | Quoted: |
| + | .a. |
| + | .\. |
| + | .b. |
| + | .\\. |
| + | .c. |
| + | .\\\. |
| + | .d. |
| + | .\\\\. |
| + | .e. |
| + | done |
shell/ash_test/ash-parsing/escape3.tests+10 -0
| @@ -0,0 +1,10 @@ |
| + | test "$CONFIG_FEATURE_FANCY_ECHO" = "y" || exit 77 |
| + | |
| + | v='a \ b \\ c \\\ d \\\\ e' |
| + | echo v: $v |
| + | echo v: "$v" |
| + | echo Unquoted: |
| + | for a in $v; do echo .$a.; done |
| + | echo Quoted: |
| + | for a in $v; do echo ".$a."; done |
| + | echo done |
shell/ash_test/ash-parsing/escape4.right+2 -0
shell/ash_test/ash-parsing/escape4.tests+6 -0
| @@ -0,0 +1,6 @@ |
| + | i\ |
| + | f tr\ |
| + | ue; th\ |
| + | en echo "O\ |
| + | k"; fi; echo "\ |
| + | End" |
shell/ash_test/ash-parsing/escape5.right+9 -0
| @@ -0,0 +1,9 @@ |
| + | a\nb\nc\n |
| + | a |
| + | b |
| + | c |
| + | a\nb\nc\n |
| + | a |
| + | b |
| + | c |
| + | Done |
shell/ash_test/ash-parsing/escape5.tests+7 -0
| @@ -0,0 +1,7 @@ |
| + | v="a\nb\nc\n" |
| + | echo "$v" |
| + | printf "$v" |
| + | v='a\nb\nc\n' |
| + | echo "$v" |
| + | printf "$v" |
| + | echo Done |
shell/ash_test/ash-parsing/group1.right+1 -0
shell/ash_test/ash-parsing/group1.tests+1 -0
| @@ -0,0 +1 @@ |
| + | { echo word} }; } |
shell/ash_test/ash-parsing/group2.right+2 -0
| @@ -0,0 +1,2 @@ |
| + | got TERM |
| + | Done: 0 |
shell/ash_test/ash-parsing/group2.tests+3 -0
| @@ -0,0 +1,3 @@ |
| + | # Bug was in handling of "}&" without space |
| + | { trap "echo got TERM" TERM; sleep 2; }& sleep 1; kill $!; wait |
| + | echo Done: $? |
shell/ash_test/ash-parsing/groups_and_keywords1.right+11 -0
| @@ -0,0 +1,11 @@ |
| + | Semicolons after } can be omitted 1: |
| + | foo |
| + | bar |
| + | Semicolons after } can be omitted 2: |
| + | foo |
| + | bar |
| + | Semicolons after fi can be omitted: |
| + | foo |
| + | bar |
| + | baz |
| + | Done:0 |
shell/ash_test/ash-parsing/groups_and_keywords1.tests+10 -0
| @@ -0,0 +1,10 @@ |
| + | echo "Semicolons after } can be omitted 1:" |
| + | if { echo foo; } then { echo bar; } fi |
| + | |
| + | echo "Semicolons after } can be omitted 2:" |
| + | while { echo foo; } do { echo bar; break; } done |
| + | |
| + | echo "Semicolons after fi can be omitted:" |
| + | while if echo foo; then echo bar; fi do echo baz; break; done |
| + | |
| + | echo Done:$? |
shell/ash_test/ash-parsing/negate.right+36 -0
| @@ -0,0 +1,36 @@ |
| + | ! printing ! |
| + | 0 |
| + | 1 |
| + | 1 |
| + | 0 |
| + | 0 |
| + | 0 |
| + | ! |
| + | a |
| + | b |
| + | c |
| + | ! 1 |
| + | a 1 |
| + | b 1 |
| + | c 1 |
| + | ! 1 |
| + | a 1 |
| + | b 1 |
| + | c 1 |
| + | 0 |
| + | 0 |
| + | 0 |
| + | 0 |
| + | 1 |
| + | 1 |
| + | 1 |
| + | 1 |
| + | 0 |
| + | 0 |
| + | 0 |
| + | 0 |
| + | 1 |
| + | 1 |
| + | 1 |
| + | 1 |
| + | Done |
shell/ash_test/ash-parsing/negate.tests+19 -0
| @@ -0,0 +1,19 @@ |
| + | echo ! printing ! |
| + | ! false |
| + | echo $? |
| + | ! true |
| + | echo $? |
| + | if ! false; then false; echo $?; fi |
| + | echo $? |
| + | if ! false; then ! false; echo $?; fi |
| + | echo $? |
| + | PRINTF=`which printf` |
| + | for a in ! a b c; do echo $a; done |
| + | for a in ! a b c; do ! printf "$a "; echo $?; done |
| + | test x"$PRINTF" = x"" && exit 1 |
| + | for a in ! a b c; do ! "$PRINTF" "$a "; echo $?; done |
| + | for a in ! a b c; do ! printf "$a " | false; echo $?; done |
| + | for a in ! a b c; do ! printf "$a " | true; echo $?; done |
| + | for a in ! a b c; do ! { printf "$a " | false; }; echo $?; done |
| + | for a in ! a b c; do ! { printf "$a " | true; }; echo $?; done |
| + | echo Done |
shell/ash_test/ash-parsing/noeol.right+1 -0
shell/ash_test/ash-parsing/noeol.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | # next line has no EOL! |
| + | echo HELLO |
shell/ash_test/ash-parsing/noeol2.right+1 -0
shell/ash_test/ash-parsing/noeol2.tests+7 -0
| @@ -0,0 +1,7 @@ |
| + | # last line has no EOL! |
| + | if true |
| + | then |
| + | echo 1 |
| + | else |
| + | echo 2 |
| + | fi |
shell/ash_test/ash-parsing/noeol3.right+1 -0
| @@ -0,0 +1 @@ |
| + | ./noeol3.tests: line 2: syntax error: unterminated quoted string |
shell/ash_test/ash-parsing/noeol3.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | # last line has no EOL! |
| + | echo "unterminated |
shell/ash_test/ash-parsing/process_subst.right+3 -0
| @@ -0,0 +1,3 @@ |
| + | TESTzzBEST |
| + | TEST$(echo zz)BEST |
| + | TEST'BEST |
shell/ash_test/ash-parsing/process_subst.tests+3 -0
| @@ -0,0 +1,3 @@ |
| + | echo "TEST`echo zz;echo;echo`BEST" |
| + | echo "TEST`echo '$(echo zz)'`BEST" |
| + | echo "TEST`echo "'"`BEST" |
shell/ash_test/ash-parsing/quote1.right+1 -0
shell/ash_test/ash-parsing/quote1.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | a=1 |
| + | echo "'$a'" |
shell/ash_test/ash-parsing/quote2.right+1 -0
shell/ash_test/ash-parsing/quote2.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | a=1 |
| + | echo ">$a" |
shell/ash_test/ash-parsing/quote3.right+12 -0
| @@ -0,0 +1,12 @@ |
| + | Testing: in "" |
| + | .. |
| + | Testing: in '' |
| + | .. |
| + | Testing: in $empty |
| + | Testing: in $empty"" |
| + | .. |
| + | Testing: in $empty'' |
| + | .. |
| + | Testing: in "$empty" |
| + | .. |
| + | Finished |
shell/ash_test/ash-parsing/quote3.tests+21 -0
| @@ -0,0 +1,21 @@ |
| + | empty='' |
| + | |
| + | echo 'Testing: in ""' |
| + | for a in ""; do echo ".$a."; done |
| + | |
| + | echo 'Testing: in '"''" |
| + | for a in ''; do echo ".$a."; done |
| + | |
| + | echo 'Testing: in $empty' |
| + | for a in $empty; do echo ".$a."; done |
| + | |
| + | echo 'Testing: in $empty""' |
| + | for a in $empty""; do echo ".$a."; done |
| + | |
| + | echo 'Testing: in $empty'"''" |
| + | for a in $empty''; do echo ".$a."; done |
| + | |
| + | echo 'Testing: in "$empty"' |
| + | for a in "$empty"; do echo ".$a."; done |
| + | |
| + | echo Finished |
shell/ash_test/ash-parsing/quote4.right+1 -0
shell/ash_test/ash-parsing/quote4.tests+2 -0
| @@ -0,0 +1,2 @@ |
| + | a_b='a b' |
| + | echo "$a_b" |
shell/ash_test/ash-parsing/starquoted.right+8 -0
| @@ -0,0 +1,8 @@ |
| + | .1 abc d e f. |
| + | .1. |
| + | .abc. |
| + | .d e f. |
| + | .-1 abc d e f-. |
| + | .-1. |
| + | .abc. |
| + | .d e f-. |
shell/ash_test/ash-parsing/starquoted.tests+8 -0
| @@ -0,0 +1,8 @@ |
| + | if test $# = 0; then |
| + | exec "$THIS_SH" "$0" 1 abc 'd e f' |
| + | fi |
| + | |
| + | for a in "$*"; do echo ".$a."; done |
| + | for a in "$@"; do echo ".$a."; done |
| + | for a in "-$*-"; do echo ".$a."; done |
| + | for a in "-$@-"; do echo ".$a."; done |
shell/ash_test/ash-parsing/starquoted2.right+8 -0
| @@ -0,0 +1,8 @@ |
| + | Should be printed |
| + | Would not be printed by bash |
| + | Would not be printed by bash |
| + | Would not be printed by bash |
| + | Should be printed |
| + | Empty: |
| + | Empty: |
| + | Empty: |
shell/ash_test/ash-parsing/starquoted2.tests+19 -0
| @@ -0,0 +1,19 @@ |
| + | if test $# != 0; then |
| + | exec "$THIS_SH" "$0" |
| + | fi |
| + | |
| + | # No params! |
| + | for a in "$*"; do echo Should be printed; done |
| + | for a in "$@"; do echo Should not be printed; done |
| + | # Yes, believe it or not, bash is mesmerized by "$@" and stops |
| + | # treating "" as "this word cannot be expanded to nothing, |
| + | # but must be at least null string". Now it can be expanded to nothing. |
| + | for a in "$@"""; do echo Would not be printed by bash; done |
| + | for a in """$@"; do echo Would not be printed by bash; done |
| + | for a in """$@"''"$@"''; do echo Would not be printed by bash; done |
| + | for a in ""; do echo Should be printed; done |
| + | |
| + | # Bug 207: "$@" expands to nothing, and we erroneously glob "%s\n" twice: |
| + | printf 'Empty:%s\n' "$@" |
| + | printf "Empty:%s\n" "$@" |
| + | printf "Empty:%s\\n" "$@" |
shell/ash_test/run-all+18 -4
| @@ -2,10 +2,24 @@ |
| |
| TOPDIR=`pwd` |
| |
| - | test -x ash || { |
| - | echo "No ./ash - creating a link to ../../busybox" |
| - | ln -s ../../busybox ash |
| - | } |
| + | if test ! -x ash; then |
| + | if test ! -x ../../busybox; then |
| + | echo "Can't run tests. Put ash binary into this directory (`pwd`)" |
| + | exit 1 |
| + | fi |
| + | echo "No ./ash - creating a link to ../../busybox" |
| + | ln -s ../../busybox ash |
| + | fi |
| + | if test ! -f .config; then |
| + | if test ! -f ../../.config; then |
| + | echo "Missing .config file" |
| + | exit 1 |
| + | fi |
| + | cp ../../.config . || exit 1 |
| + | fi |
| + | |
| + | eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' .config) |
| + | |
| test -x printenv || gcc -O2 -o printenv printenv.c || exit $? |
| test -x recho || gcc -O2 -o recho recho.c || exit $? |
| test -x zecho || gcc -O2 -o zecho zecho.c || exit $? |