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
This commit is contained in:
Lionel Sambuc 2012-12-10 15:49:24 +01:00
parent 8aeac26999
commit 2dc480bd58
2 changed files with 122 additions and 93 deletions

View file

@ -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 <y >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 <x.c >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 <y >/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 <f1 | head -1 >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 <x >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 <x1 >/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 <x >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 <<END
demit 10
epitonic 40
@ -226,16 +241,16 @@ bibelot 3
apoop 20
END
sort <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 <x1 >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 <x |head -1 >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 <<END
@ -265,24 +280,24 @@ p
z
END
tsort <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

View file

@ -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 <<END
The time has come the walrus said to talk of many things
@ -43,18 +57,18 @@ cat >answer <<END # C program should produce these results
END
make
if test -f a.out; then : ; else echo Compilation failed; fi
if test -f a.out; then : ; else bomb "Compilation failed"; fi
a.out >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 <<END # x is a test file with 3 columns
@ -72,24 +86,24 @@ black
END
cut -c 3-7 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 <<END
END
fi
if cmp -s x answer; then : ; else echo Error in od test 1; fi
if cmp -s x answer; then : ; else bomb "Error in od test 1"; fi
head -1 $f |od -d >x # see if od converts ascii to decimal ok
if [ $ARCH = i86 -o $ARCH = i386 ]
@ -134,7 +148,7 @@ cat >answer <<END
END
fi
if cmp -s x answer; then : ; else echo Error in od test 2; fi
if cmp -s x answer; then : ; else bomb "Error in od test 2"; fi
#Test paste
cat >x <<END
@ -155,14 +169,14 @@ blue blauw
END
paste x y >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 <<END
prep >x <<END
"Hi," said Carol, laughing, "How's life?"
END
echo >answer <<END
cat >answer <<END
hi
said
carol
@ -171,21 +185,21 @@ how's
life
END
if cmp -s x answer; then : ; else echo Error in prep test 1; fi
if cmp -s x answer; then : ; else bomb "Error in prep test 1"; fi
#Test printenv
printenv >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 <<END
MS-DOS: Just say no
END
if cmp -s x answer; then : ; else echo Error in strings test 1; fi
if cmp -s x answer; then : ; else bomb "Error in strings test 1"; fi
#Test sum
sum $f >x
@ -201,14 +215,14 @@ cat >answer <<END
29904 1 $f
END
if cmp -s x answer; then : ; else echo Error in sum test 1; fi
if cmp -s x answer; then : ; else bomb "Error in sum test 1"; fi
#Test tee
cat $f | tee x >/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 <<END
@ -225,7 +239,7 @@ cat >answer <<END
END
uniq <x >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 <<END
@ -248,13 +262,13 @@ END
prep x | sort | uniq -c >y1
sort <y1 >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