From 2dc480bd5832f1c71a1b99b50a4639116dc36a11 Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Mon, 10 Dec 2012 15:49:24 +0100 Subject: [PATCH] Shell tests now complain more loudly. Adding the bomb function which takes as a parameter a string to be printed, print it, cleans up and exits with an error code. It also means they will exit after the first error, unlike previous behaviour. Change-Id: Id0ffdf3938da43586c9dae7c566ee130533c5577 --- test/testsh1.sh | 131 +++++++++++++++++++++++++++--------------------- test/testsh2.sh | 84 ++++++++++++++++++------------- 2 files changed, 122 insertions(+), 93 deletions(-) diff --git a/test/testsh1.sh b/test/testsh1.sh index 0a9e20ff9..5e43f8954 100755 --- a/test/testsh1.sh +++ b/test/testsh1.sh @@ -2,15 +2,30 @@ # Shell script used to test MINIX. +# Helper function +bomb() { + echo $* + cd .. + rm -rf $TESTDIR + exit 1 +} + + PATH=:/bin:/usr/bin export PATH -echo -n "Shell test 1 " -rm -rf DIR_SH1 -mkdir DIR_SH1 -cd DIR_SH1 +TESTDIR=DIR_SH1 +export TESTDIR -f=../test1.c +OLDPWD=`pwd` +export OLDPWD + +echo -n "Shell test 1 " +rm -rf $TESTDIR +mkdir $TESTDIR +cd $TESTDIR + +f=$OLDPWD/test1.c if test -r $f; then : ; else echo sh1 cannot read $f; exit 1; fi #Initial setup @@ -27,24 +42,24 @@ cat tmp tmp tmp >f1 #Test cp mkdir foo cp /etc/rc /etc/passwd foo -if cmp -s foo/rc /etc/rc ; then : ; else echo Error on cp test 1; fi -if cmp -s foo/passwd /etc/passwd ; then : ; else echo Error on cp test 2; fi +if cmp -s foo/rc /etc/rc ; then : ; else bomb "Error on cp test 1"; fi +if cmp -s foo/passwd /etc/passwd ; then : ; else bomb "Error on cp test 2"; fi rm -rf foo #Test cat cat num num num num num >y wc -c y >x1 echo " 55 y" >x2 -if cmp -s x1 x2; then : ; else echo Error on cat test 1; fi +if cmp -s x1 x2; then : ; else bomb "Error on cat test 1"; fi cat z -if cmp -s y z; then : ; else echo Error on cat test 2; fi +if cmp -s y z; then : ; else bomb "Error on cat test 2"; fi #Test basename if test `basename /usr/ast/foo.c .c` != 'foo' - then echo Error on basename test 1 + then bomb "Error on basename test 1" fi -if test `basename a/b/c/d` != 'd'; then Error on basename test 2; fi +if test `basename a/b/c/d` != 'd'; then bomb "Error on basename test 2"; fi #Test cdiff, sed, and patch cp $f x.c # x.c is a copy $f @@ -52,7 +67,7 @@ echo "/a/s//#####/g" >s # create sed script sed -f s y.c # y.c is new version of x.c diff -c x.c y.c >y # y is cdiff listing patch x.c y 2>/dev/null # z should be y.c -if cmp -s x.c y.c; then : ; else echo Error in cdiff test; fi +if cmp -s x.c y.c; then : ; else bomb "Error in cdiff test"; fi rm x.c* y.c s y #Test comm, grep -v @@ -60,16 +75,16 @@ ls /etc >x # x = list of /etc grep -v "passwd" x >y # y = x except for /etc/passwd comm -3 x y >z # should only be 1 line, /etc/passwd echo "passwd" >w -if cmp -s w z; then : else echo Error on comm test 1; fi +if cmp -s w z; then : else bomb "Error on comm test 1"; fi comm -13 x y >z # should be empty -if test -s z; then echo Error on comm test 2; fi +if test -s z; then bomb "Error on comm test 2"; fi rm -rf w x y z #Test compress compress -fc $f >x.c.Z # compress the test file compress -cd x.c.Z >y # uncompress it -if cmp -s $f y; then : else echo Error in compress test 1; fi +if cmp -s $f y; then : else bomb "Error in compress test 1"; fi rm -rf x.c.Z y #Test ed @@ -90,56 +105,56 @@ w q END ed 2>/dev/null x /dev/null -if cmp -s x $f; then : ; else echo Error in ed test 1; fi +if cmp -s x $f; then : ; else bomb "Error in ed test 1"; fi rm x y #Test expr -if test `expr 1 + 1` != 2; then echo Error on expr test 1; fi -if test `expr 10000 - 1` != 9999; then echo Error on expr test 2; fi -if test `expr 100 '*' 50` != 5000; then echo Error on expr test 3; fi -if test `expr 120 / 5` != 24; then echo Error on expr test 4; fi -if test `expr 143 % 7` != 3; then echo Error on expr test 5; fi +if test `expr 1 + 1` != 2; then bomb "Error on expr test 1"; fi +if test `expr 10000 - 1` != 9999; then bomb "Error on expr test 2"; fi +if test `expr 100 '*' 50` != 5000; then bomb "Error on expr test 3"; fi +if test `expr 120 / 5` != 24; then bomb "Error on expr test 4"; fi +if test `expr 143 % 7` != 3; then bomb "Error on expr test 5"; fi a=100 a=`expr $a + 1` -if test $a != '101'; then echo Error on expr test 6; fi +if test $a != '101'; then bomb "Error on expr test 6"; fi #Test fgrep fgrep "abc" alpha >z -if cmp -s alpha z ; then : else echo Error on fgrep test 1; fi +if cmp -s alpha z ; then : else bomb "Error on fgrep test 1"; fi fgrep "abc" num >z -if test -s z; then echo Error on fgrep test 2; fi +if test -s z; then bomb "Error on fgrep test 2"; fi cat alpha num >z fgrep "012" z >w -if cmp -s w num; then : ; else echo Error fgrep test 3; fi +if cmp -s w num; then : ; else bomb "Error fgrep test 3"; fi #Test find date >Rabbit echo "Rabbit" >y find . -name Rabbit -print >z -if cmp -s y z; then : else echo Error on find test 1; fi +if cmp -s y z; then : else bomb "Error on find test 1"; fi find . -name Bunny -print >z -if test -s z; then echo Error on find test 2; fi +if test -s z; then bomb "Error on find test 2"; fi rm Rabbit y z #Test grep grep "a" alpha >x -if cmp -s x alpha; then : ; else echo Error on grep test 1; fi +if cmp -s x alpha; then : ; else bomb "Error on grep test 1"; fi grep "a" ALPHA >x -if test -s x; then echo Error on grep test 2; fi +if test -s x; then bomb "Error on grep test 2"; fi grep -v "0" alpha >x -if cmp -s x alpha; then : ; else echo Error on grep test 3; fi +if cmp -s x alpha; then : ; else bomb "Error on grep test 3"; fi grep -s "a" XXX_nonexistent_file_XXX >x if test -s x; then echo "Error on grep test 4"; fi -if grep -s "a" alpha >x; then : else echo Error on grep test 5; fi -if grep -s "a" ALPHA >x; then echo Error on grep test 6; fi +if grep -s "a" alpha >x; then : else bomb "Error on grep test 5"; fi +if grep -s "a" ALPHA >x; then bomb "Error on grep test 6"; fi #Test head head -1 f1 >x -if cmp -s x alpha; then : else echo Error on head test 1; fi +if cmp -s x alpha; then : else bomb "Error on head test 1"; fi head -2 f1 >x cat alpha ALPHA >y -if cmp -s x y; then : else echo Error on head test 2; fi +if cmp -s x y; then : else bomb "Error on head test 2"; fi #Test ls mkdir FOO @@ -154,37 +169,37 @@ x y z END -if cmp -s w w1; then : ; else echo Error on ls test 1; fi +if cmp -s w w1; then : ; else bomb "Error on ls test 1"; fi rm * cd .. rmdir FOO #Test mkdir/rmdir mkdir Foo Bar -if test -d Foo; then : ; else echo Error on mkdir test 1; fi -if test -d Bar; then : ; else echo Error on mkdir test 2; fi +if test -d Foo; then : ; else bomb "Error on mkdir test 1"; fi +if test -d Bar; then : ; else bomb "Error on mkdir test 2"; fi rmdir Foo Bar -if test -d Foo; then echo Error on mkdir test 3; fi -if test -d Foo; then echo Error on rmdir test 4; fi +if test -d Foo; then bomb "Error on mkdir test 3"; fi +if test -d Foo; then bomb "Error on rmdir test 4"; fi #Test mv mkdir MVDIR cp $f x mv x y mv y z -if cmp -s $f z; then : ; else echo Error on mv test 1; fi +if cmp -s $f z; then : ; else bomb "Error on mv test 1"; fi cp $f x mv x MVDIR/y -if cmp -s $f MVDIR/y; then : ; else echo Error on mv test 2; fi +if cmp -s $f MVDIR/y; then : ; else bomb "Error on mv test 2"; fi #Test rev rev ahpla echo "zyxwvutsrqponmlkjihgfedcba" >x -if cmp -s x ahpla; then : ; else echo Error on rev test 1; fi +if cmp -s x ahpla; then : ; else bomb "Error on rev test 1"; fi rev <$f >x rev y -if cmp -s $f x; then echo Error on rev test 2; fi -if cmp -s $f y; then : ; else echo error on rev test 3; fi +if cmp -s $f x; then bomb "Error on rev test 2"; fi +if cmp -s $f y; then : ; else bomb "Error on rev test 3"; fi #Test shar cp $f w @@ -194,16 +209,16 @@ cp num z shar w x y z >x1 rm w x y z sh /dev/null -if cmp -s w $f; then : ; else echo Error on shar test 1; fi -if cmp -s x alpha; then : ; else echo Error on shar test 2; fi -if cmp -s y ALPHA; then : ; else echo Error on shar test 3; fi -if cmp -s z num; then : ; else echo Error on shar test 4; fi +if cmp -s w $f; then : ; else bomb "Error on shar test 1"; fi +if cmp -s x alpha; then : ; else bomb "Error on shar test 2"; fi +if cmp -s y ALPHA; then : ; else bomb "Error on shar test 3"; fi +if cmp -s z num; then : ; else bomb "Error on shar test 4"; fi #Test sort sort <$f >x wc <$f >x1 wc x2 -if cmp -s x1 x2; then : ; else echo Error on sort test 1; fi +if cmp -s x1 x2; then : ; else bomb "Error on sort test 1"; fi cat >x <x1 -if cmp -s y x1; then : ; else echo Error on sort test 2; fi +if cmp -s y x1; then : ; else bomb "Error on sort test 2"; fi sort -r x2 -if cmp -s x2 z; then : ; else echo Error on sort test 3; fi +if cmp -s x2 z; then : ; else bomb "Error on sort test 3"; fi sort -k 2n y echo "bibelot 3" >z -if cmp -s y z; then : ; else echo Error on sort test 4; fi +if cmp -s y z; then : ; else bomb "Error on sort test 4"; fi #Test tail tail -1 f1 >x -if cmp -s x special; then : ; else echo Error on tail test 1; fi +if cmp -s x special; then : ; else bomb "Error on tail test 1"; fi #Test tsort cat >x <y -if cmp -s y answer; then : ; else echo Error on tsort test 1; fi +if cmp -s y answer; then : ; else bomb "Error on tsort test 1"; fi #Test uue/uud cp $f x uue x -if test -s x.uue; then : ; else echo Error on uue/uud test 1; fi +if test -s x.uue; then : ; else bomb "Error on uue/uud test 1"; fi rm x uud x.uue -if cmp -s x $f; then : ; else echo Error on uue/uud test 2; fi +if cmp -s x $f; then : ; else bomb "Error on uue/uud test 2"; fi compress -fc x >x.Z 2>/dev/null uue x.Z rm x x.Z uud x.uue compress -cd x.Z >x -if cmp -s x $f; then : ; else echo Error on uue/uud test 3; fi +if cmp -s x $f; then : ; else bomb "Error on uue/uud test 3"; fi cd .. -rm -rf DIR_SH1 +rm -rf $TESTDIR echo ok diff --git a/test/testsh2.sh b/test/testsh2.sh index d55af2a3f..0a30b420f 100755 --- a/test/testsh2.sh +++ b/test/testsh2.sh @@ -2,18 +2,32 @@ # Shell script #2 used to test MINIX. +# Helper function +bomb() { + echo $* + cd .. + rm -rf $TESTDIR + exit 1 +} + PATH=:/bin:/usr/bin:/usr/pkg/bin export PATH +TESTDIR=DIR_SH2 +export TESTDIR + +OLDPWD=`pwd` +export OLDPWD + # CC="exec cc -wo -F" # nonstandard flags for ACK :-( CC=clang ARCH=`arch` -echo -n "Shell test 2 " -rm -rf DIR_SH2 -mkdir DIR_SH2 # all files are created here -cd DIR_SH2 +echo -n "Shell test 2 " +rm -rf $TESTDIR +mkdir $TESTDIR # all files are created here +cd $TESTDIR cat >file <answer <x -if test -f x; then : ; else echo No compiler output; fi -if cmp -s x answer; then : ; else echo Error in cc test 1; fi +if test -f x; then : ; else bomb "No compiler output"; fi +if cmp -s x answer; then : ; else bomb "Error in cc test 1"; fi #Test chmod -echo Hi there folks >x -if test -r x; then : ; else echo Error on chmod test 1; fi +echo "Hi there folks" >x +if test -r x; then : ; else bomb "Error on chmod test 1"; fi chmod 377 x -if test -r x; then test -w / || echo Error on chmod test 2; fi +if test -r x; then test -w / || bomb "Error on chmod test 2"; fi chmod 700 x -if test -r x; then : ; else echo Error on chmod test 3; fi +if test -r x; then : ; else bomb "Error on chmod test 3"; fi #Test cut cat >x <y # extract columns 3-7 -if cmp -s y answer; then : ; else echo Error in cut test 1; fi +if cmp -s y answer; then : ; else bomb "Error in cut test 1"; fi #Test dd dd if=$f of=x bs=12 count=1 2>/dev/null # x = bytes 0-11 dd if=$f of=y bs=6 count=4 skip=2 2>/dev/null # y = bytes 11-35 cat x y >z # z = bytes 0-35 dd if=$f of=answer bs=9 count=4 2>/dev/null # answer = bytes 0-35 -if cmp -s z answer; then : ; else echo Error in dd test 1; fi +if cmp -s z answer; then : ; else bomb "Error in dd test 1"; fi #Test df # hard to make a sensible Test here rm ? df >x -if test -r x; then : ; else echo Error in df Test 1; fi +if test -r x; then : ; else bomb "Error in df Test 1"; fi #Test du # see df rm ? du >x -if test -r x; then : ; else echo Error in du Test 1; fi +if test -r x; then : ; else bomb "Error in du Test 1"; fi #Test od head -1 $f |od >x # see if od converts ascii to octal ok @@ -112,7 +126,7 @@ cat >answer <x # see if od converts ascii to decimal ok if [ $ARCH = i86 -o $ARCH = i386 ] @@ -134,7 +148,7 @@ cat >answer <x <z -if cmp -s z answer; then : ; else echo Error in paste test 1; fi +if cmp -s z answer; then : ; else bomb "Error in paste test 1"; fi #Test prep -echo >x <x <answer <answer <x -if grep HOME x >/dev/null; then : ; else echo Error in printenv test 1; fi -if grep PATH x >/dev/null; then : ; else echo Error in printenv test 2; fi -if grep SHELL x >/dev/null; then : ; else echo Error in printenv test 3; fi -if grep USER x >/dev/null; then : ; else echo Error in printenv test 4; fi +if grep HOME x >/dev/null; then : ; else bomb "Error in printenv test 1"; fi +if grep PATH x >/dev/null; then : ; else bomb "Error in printenv test 2"; fi +if grep SHELL x >/dev/null; then : ; else bomb "Error in printenv test 3"; fi +if grep USER x >/dev/null; then : ; else bomb "Error in printenv test 4"; fi #Test pwd pwd >Pwd_file cd `pwd` pwd >x -if test -s Pwd_file; then : ; else echo Error in pwd test 1; fi -if cmp -s Pwd_file x; then : ; else echo Error in pwd test 2; fi +if test -s Pwd_file; then : ; else bomb "Error in pwd test 1"; fi +if cmp -s Pwd_file x; then : ; else bomb "Error in pwd test 2"; fi #Test strings strings a.out | grep "MS-DOS" >x @@ -193,7 +207,7 @@ cat >answer <x @@ -201,14 +215,14 @@ cat >answer </dev/null -if cmp -s x $f; then : ; else echo Error in tee test 1; fi +if cmp -s x $f; then : ; else bomb "Error in tee test 1"; fi #Test true -if true ; then : ; else echo Error in true test 1; fi +if true ; then : ; else bomb "Error in true test 1"; fi #Test uniq cat >x <answer <y -if cmp -s y answer; then : ; else echo Error in uniq test 1; fi +if cmp -s y answer; then : ; else bomb "Error in uniq test 1"; fi #Test pipelines cat >x <y1 sort y -if cmp -s y answer; then : ; else echo Error in pipeline test 1; fi +if cmp -s y answer; then : ; else bomb "Error in pipeline test 1"; fi cat $f $f $f | sort | uniq >x sort <$f >y -if cmp -s x y; then : ; else echo Error in pipeline test 2; fi +if cmp -s x y; then : ; else bomb "Error in pipeline test 2"; fi cd .. -rm -rf DIR_SH2 +rm -rf $TESTDIR echo ok