← Commit list

a43dba76e

Denis Vlasenko
Denis Vlasenko
2008-03-02
FAILED Duration: 24s

Subject

msh: create testsuite (based on hush one) hush: add TODO (doesn't know ":" command)

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/hush_test/zbad +3 -0shell/msh_test/msh-bugs/noeol3.right +1 -0shell/msh_test/msh-bugs/noeol3.tests +2 -0shell/msh_test/msh-bugs/process_subst.right +3 -0shell/msh_test/msh-bugs/process_subst.tests +3 -0shell/msh_test/msh-bugs/read.right +4 -0shell/msh_test/msh-bugs/read.tests +4 -0shell/msh_test/msh-bugs/shift.right +6 -0shell/msh_test/msh-bugs/shift.tests +14 -0shell/msh_test/msh-bugs/starquoted.right +8 -0shell/msh_test/msh-bugs/starquoted.tests +8 -0shell/msh_test/msh-bugs/syntax_err.right +2 -0shell/msh_test/msh-bugs/syntax_err.tests +3 -0shell/msh_test/msh-bugs/var_expand_in_assign.right +5 -0shell/msh_test/msh-bugs/var_expand_in_assign.tests +15 -0shell/msh_test/msh-bugs/var_expand_in_redir.right +3 -0shell/msh_test/msh-bugs/var_expand_in_redir.tests +13 -0shell/msh_test/msh-execution/nested_break.right +8 -0shell/msh_test/TODO_bug846 → shell/msh_test/msh-execution/nested_break.tests +0 -12shell/msh_test/msh-misc/tick.right +2 -0shell/msh_test/msh-misc/tick.tests +4 -0shell/msh_test/msh-parsing/argv0.right +1 -0shell/msh_test/msh-parsing/argv0.tests +4 -0shell/msh_test/msh-parsing/noeol.right +1 -0shell/msh_test/msh-parsing/noeol.tests +2 -0shell/msh_test/msh-parsing/noeol2.right +1 -0shell/msh_test/msh-parsing/noeol2.tests +7 -0shell/msh_test/msh-parsing/quote1.right +1 -0shell/msh_test/msh-parsing/quote1.tests +2 -0shell/msh_test/msh-parsing/quote2.right +1 -0shell/msh_test/msh-parsing/quote2.tests +2 -0shell/msh_test/msh-parsing/quote3.right +3 -0shell/msh_test/msh-parsing/quote3.tests +8 -0shell/msh_test/msh-parsing/quote4.right +1 -0shell/msh_test/msh-parsing/quote4.tests +2 -0shell/msh_test/msh-vars/star.right +6 -0shell/msh_test/msh-vars/star.tests +8 -0shell/msh_test/msh-vars/var.right +4 -0shell/msh_test/msh-vars/var.tests +9 -0shell/msh_test/msh-vars/var_subst_in_for.right +40 -0shell/msh_test/msh-vars/var_subst_in_for.tests +40 -0shell/msh_test/run-all +64 -0
shell/hush_test/zbad+3 -0
@@ -0,0 +1,3 @@
+# TODO: hush doesn't know ':' null command
+
+while :; do exit; done
shell/msh_test/msh-bugs/noeol3.right+1 -0
@@ -0,0 +1 @@
+hush: syntax error: unterminated "
shell/msh_test/msh-bugs/noeol3.tests+2 -0
@@ -0,0 +1,2 @@
+# last line has no EOL!
+echo "unterminated
shell/msh_test/msh-bugs/process_subst.right+3 -0
@@ -0,0 +1,3 @@
+TESTzzBEST
+TEST$(echo zz)BEST
+TEST'BEST
shell/msh_test/msh-bugs/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/msh_test/msh-bugs/read.right+4 -0
@@ -0,0 +1,4 @@
+read
+cat
+echo "REPLY=$REPLY"
+REPLY=exec <read.tests
shell/msh_test/msh-bugs/read.tests+4 -0
@@ -0,0 +1,4 @@
+exec <read.tests
+read
+cat
+echo "REPLY=$REPLY"
shell/msh_test/msh-bugs/shift.right+6 -0
@@ -0,0 +1,6 @@
+./shift.tests abc d e
+./shift.tests d e 123
+./shift.tests d e 123
+./shift.tests
+./shift.tests
+./shift.tests
shell/msh_test/msh-bugs/shift.tests+14 -0
@@ -0,0 +1,14 @@
+if test $# = 0; then
+ exec "$THIS_SH" $0 abc "d e" 123
+fi
+echo $0 $1 $2
+shift
+echo $0 $1 $2
+shift 999
+echo $0 $1 $2
+shift 2
+echo $0 $1 $2
+shift 2
+echo $0 $1 $2
+shift
+echo $0 $1 $2
shell/msh_test/msh-bugs/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/msh_test/msh-bugs/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/msh_test/msh-bugs/syntax_err.right+2 -0
@@ -0,0 +1,2 @@
+shown
+hush: syntax error: unterminated '
shell/msh_test/msh-bugs/syntax_err.tests+3 -0
@@ -0,0 +1,3 @@
+echo shown
+echo test `echo 'aa`
+echo not shown
shell/msh_test/msh-bugs/var_expand_in_assign.right+5 -0
@@ -0,0 +1,5 @@
+. .
+.abc d e.
+.abc d e.
+.abc d e.
+.abc d e.
shell/msh_test/msh-bugs/var_expand_in_assign.tests+15 -0
@@ -0,0 +1,15 @@
+if test $# = 0; then
+ exec "$THIS_SH" "$0" abc "d e"
+fi
+
+space=' '
+echo .$space.
+
+a=$*
+echo .$a.
+a=$@
+echo .$a.
+a="$*"
+echo .$a.
+a="$@"
+echo .$a.
shell/msh_test/msh-bugs/var_expand_in_redir.right+3 -0
@@ -0,0 +1,3 @@
+TEST1
+TEST2
+TEST3
shell/msh_test/msh-bugs/var_expand_in_redir.tests+13 -0
@@ -0,0 +1,13 @@
+if test $# = 0; then
+ exec "$THIS_SH" "$0" abc "d e"
+fi
+
+echo TEST1 >"$1.out"
+echo TEST2 >"$2.out"
+# bash says: "[email protected]": ambiguous redirect
+# ash handles it as if it is '$*' - we do the same
+echo TEST3 >"[email protected]"
+
+cat abc.out "d e.out" "abc d e.out"
+
+rm abc.out "d e.out" "abc d e.out"
shell/msh_test/msh-execution/nested_break.right+8 -0
@@ -0,0 +1,8 @@
+A
+B
+iteration
+C
+A
+B
+iteration
+D
shell/msh_test/TODO_bug846 → shell/msh_test/msh-execution/nested_break.tests+0 -12
@@ -1,5 +1,3 @@
-#!/bin/sh
-# For future msh testsuite:
# Testcase for http://bugs.busybox.net/view.php?id=846
n=0
@@ -17,13 +15,3 @@ do
n=`expr $n + 1`
done
echo D
-
-# output should be:
-# A
-# B
-# iteration
-# C
-# A
-# B
-# iteration
-# D
shell/msh_test/msh-misc/tick.right+2 -0
@@ -0,0 +1,2 @@
+1
+1
shell/msh_test/msh-misc/tick.tests+4 -0
@@ -0,0 +1,4 @@
+true
+false; echo `echo $?`
+true
+{ false; echo `echo $?`; }
shell/msh_test/msh-parsing/argv0.right+1 -0
@@ -0,0 +1 @@
+OK
shell/msh_test/msh-parsing/argv0.tests+4 -0
@@ -0,0 +1,4 @@
+if test $# = 0; then
+ exec "$THIS_SH" "$0" arg
+fi
+echo OK
shell/msh_test/msh-parsing/noeol.right+1 -0
@@ -0,0 +1 @@
+HELLO
shell/msh_test/msh-parsing/noeol.tests+2 -0
@@ -0,0 +1,2 @@
+# next line has no EOL!
+echo HELLO
shell/msh_test/msh-parsing/noeol2.right+1 -0
@@ -0,0 +1 @@
+1
shell/msh_test/msh-parsing/noeol2.tests+7 -0
@@ -0,0 +1,7 @@
+# last line has no EOL!
+if true
+then
+ echo 1
+else
+ echo 2
+fi
shell/msh_test/msh-parsing/quote1.right+1 -0
@@ -0,0 +1 @@
+'1'
shell/msh_test/msh-parsing/quote1.tests+2 -0
@@ -0,0 +1,2 @@
+a=1
+echo "'$a'"
shell/msh_test/msh-parsing/quote2.right+1 -0
@@ -0,0 +1 @@
+>1
shell/msh_test/msh-parsing/quote2.tests+2 -0
@@ -0,0 +1,2 @@
+a=1
+echo ">$a"
shell/msh_test/msh-parsing/quote3.right+3 -0
@@ -0,0 +1,3 @@
+Testing: in $empty""
+..
+Finished
shell/msh_test/msh-parsing/quote3.tests+8 -0
@@ -0,0 +1,8 @@
+if test $# = 0; then
+ exec "$THIS_SH" quote3.tests abc "d e"
+fi
+
+echo 'Testing: in $empty""'
+empty=''
+for a in $empty""; do echo ".$a."; done
+echo Finished
shell/msh_test/msh-parsing/quote4.right+1 -0
@@ -0,0 +1 @@
+a b
shell/msh_test/msh-parsing/quote4.tests+2 -0
@@ -0,0 +1,2 @@
+a_b='a b'
+echo "$a_b"
shell/msh_test/msh-vars/star.right+6 -0
@@ -0,0 +1,6 @@
+.1.
+.abc.
+.d.
+.e.
+.f.
+.1 abc d e f.
shell/msh_test/msh-vars/star.tests+8 -0
@@ -0,0 +1,8 @@
+if test $# = 0; then
+ exec "$THIS_SH" star.tests 1 abc 'd e f'
+fi
+# 'd e f' should be split into 3 separate args:
+for a in $*; do echo ".$a."; done
+
+# must produce .1 abc d e f.
+for a in "$*"; do echo ".$a."; done
shell/msh_test/msh-vars/var.right+4 -0
@@ -0,0 +1,4 @@
+http://busybox.net
+http://busybox.net_abc
+1
+1
shell/msh_test/msh-vars/var.tests+9 -0
@@ -0,0 +1,9 @@
+URL=http://busybox.net
+
+echo $URL
+echo ${URL}_abc
+
+true
+false; echo $?
+true
+{ false; echo $?; }
shell/msh_test/msh-vars/var_subst_in_for.right+40 -0
@@ -0,0 +1,40 @@
+Testing: in x y z
+.x.
+.y.
+.z.
+Testing: in u $empty v
+.u.
+.v.
+Testing: in u " $empty" v
+.u.
+. .
+.v.
+Testing: in u $empty $empty$a v
+.u.
+.a.
+.v.
+Testing: in $a_b
+.a.
+.b.
+Testing: in $*
+.abc.
+.d.
+.e.
+Testing: in $@
+.abc.
+.d.
+.e.
+Testing: in -$*-
+.-abc.
+.d.
+.e-.
+Testing: in -$@-
+.-abc.
+.d.
+.e-.
+Testing: in $a_b -$a_b-
+.a.
+.b.
+.-a.
+.b-.
+Finished
shell/msh_test/msh-vars/var_subst_in_for.tests+40 -0
@@ -0,0 +1,40 @@
+if test $# = 0; then
+ exec "$THIS_SH" var_subst_in_for.tests abc "d e"
+fi
+
+echo 'Testing: in x y z'
+for a in x y z; do echo ".$a."; done
+
+echo 'Testing: in u $empty v'
+empty=''
+for a in u $empty v; do echo ".$a."; done
+
+echo 'Testing: in u " $empty" v'
+empty=''
+for a in u " $empty" v; do echo ".$a."; done
+
+echo 'Testing: in u $empty $empty$a v'
+a='a'
+for a in u $empty $empty$a v; do echo ".$a."; done
+
+echo 'Testing: in $a_b'
+a_b='a b'
+for a in $a_b; do echo ".$a."; done
+
+echo 'Testing: in $*'
+for a in $*; do echo ".$a."; done
+
+echo 'Testing: in $@'
+for a in $@; do echo ".$a."; done
+
+echo 'Testing: in -$*-'
+for a in -$*-; do echo ".$a."; done
+
+echo 'Testing: in -$@-'
+for a in -$@-; do echo ".$a."; done
+
+echo 'Testing: in $a_b -$a_b-'
+a_b='a b'
+for a in $a_b -$a_b-; do echo ".$a."; done
+
+echo Finished
shell/msh_test/run-all+64 -0
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+test -x msh || {
+ echo "No ./msh?! Perhaps you want to run 'ln -s ../../busybox msh'"
+ exit
+}
+
+PATH="$PWD:$PATH" # for msh
+export PATH
+
+THIS_SH="$PWD/msh"
+export THIS_SH
+
+do_test()
+{
+ test -d "$1" || return 0
+# echo Running tests in directory "$1"
+ (
+ cd "$1" || { echo "cannot cd $1!"; exit 1; }
+ for x in run-*; do
+ test -f "$x" || continue
+ case "$x" in
+ "$0"|run-minimal|run-gprof) ;;
+ *.orig|*~) ;;
+ #*) echo $x ; sh $x ;;
+ *)
+ sh "$x" >"../$1-$x.fail" 2>&1 && \
+ { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
+ ;;
+ esac
+ done
+ # Many bash run-XXX scripts just do this,
+ # no point in duplication it all over the place
+ for x in *.tests; do
+ test -x "$x" || continue
+ name="${x%%.tests}"
+ test -f "$name.right" || continue
+# echo Running test: "$name.right"
+ {
+ "$THIS_SH" "./$x" >"$name.xx" 2>&1
+ diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
+ } && echo "$1/$x: ok" || echo "$1/$x: fail"
+ done
+ )
+}
+
+# Main part of this script
+# Usage: run-all [directories]
+
+if [ $# -lt 1 ]; then
+ # All sub directories
+ modules=`ls -d msh-*`
+
+ for module in $modules; do
+ do_test $module
+ done
+else
+ while [ $# -ge 1 ]; do
+ if [ -d $1 ]; then
+ do_test $1
+ fi
+ shift
+ done
+fi