← Commit list

e34dbc4fd

Denys Vlasenko
Denys Vlasenko
2017-07-24
SUCCESS Duration: 143s

Subject

ash: add all hush parsing tests to ast tests

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

shell/ash_test/ash-parsing/argv0.right +1 -0shell/ash_test/ash-parsing/argv0.tests +4 -0shell/ash_test/ash-parsing/brace1.right +7 -0shell/ash_test/ash-parsing/brace1.tests +7 -0shell/ash_test/ash-parsing/brace2.right +3 -0shell/ash_test/ash-parsing/brace2.tests +5 -0shell/ash_test/ash-parsing/comment1.right +2 -0shell/ash_test/ash-parsing/comment1.tests +2 -0shell/ash_test/ash-parsing/eol1.right +1 -0shell/ash_test/ash-parsing/eol1.tests +18 -0shell/ash_test/ash-parsing/escape1.right +4 -0shell/ash_test/ash-parsing/escape1.tests +6 -0shell/ash_test/ash-parsing/escape2.right +4 -0shell/ash_test/ash-parsing/escape2.tests +4 -0shell/ash_test/ash-parsing/escape3.right +23 -0shell/ash_test/ash-parsing/escape3.tests +10 -0shell/ash_test/ash-parsing/escape4.right +2 -0shell/ash_test/ash-parsing/escape4.tests +6 -0shell/ash_test/ash-parsing/escape5.right +9 -0shell/ash_test/ash-parsing/escape5.tests +7 -0shell/ash_test/ash-parsing/group1.right +1 -0shell/ash_test/ash-parsing/group1.tests +1 -0shell/ash_test/ash-parsing/group2.right +2 -0shell/ash_test/ash-parsing/group2.tests +3 -0shell/ash_test/ash-parsing/groups_and_keywords1.right +11 -0shell/ash_test/ash-parsing/groups_and_keywords1.tests +10 -0shell/ash_test/ash-parsing/negate.right +36 -0shell/ash_test/ash-parsing/negate.tests +19 -0shell/ash_test/ash-parsing/noeol.right +1 -0shell/ash_test/ash-parsing/noeol.tests +2 -0shell/ash_test/ash-parsing/noeol2.right +1 -0shell/ash_test/ash-parsing/noeol2.tests +7 -0shell/ash_test/ash-parsing/noeol3.right +1 -0shell/ash_test/ash-parsing/noeol3.tests +2 -0shell/ash_test/ash-parsing/process_subst.right +3 -0shell/ash_test/ash-parsing/process_subst.tests +3 -0shell/ash_test/ash-parsing/quote1.right +1 -0shell/ash_test/ash-parsing/quote1.tests +2 -0shell/ash_test/ash-parsing/quote2.right +1 -0shell/ash_test/ash-parsing/quote2.tests +2 -0shell/ash_test/ash-parsing/quote3.right +12 -0shell/ash_test/ash-parsing/quote3.tests +21 -0shell/ash_test/ash-parsing/quote4.right +1 -0shell/ash_test/ash-parsing/quote4.tests +2 -0shell/ash_test/ash-parsing/starquoted.right +8 -0shell/ash_test/ash-parsing/starquoted.tests +8 -0shell/ash_test/ash-parsing/starquoted2.right +8 -0shell/ash_test/ash-parsing/starquoted2.tests +19 -0shell/ash_test/run-all +18 -4
shell/ash_test/ash-parsing/argv0.right+1 -0
@@ -0,0 +1 @@
+OK
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
@@ -0,0 +1 @@
+Done: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
@@ -0,0 +1,2 @@
+Ok
+End
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
@@ -0,0 +1 @@
+word} }
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
@@ -0,0 +1 @@
+HELLO
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
@@ -0,0 +1 @@
+1
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
@@ -0,0 +1 @@
+'1'
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
@@ -0,0 +1 @@
+>1
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
@@ -0,0 +1 @@
+a b
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 $?