281 lines
5.9 KiB
Bash
Executable File
281 lines
5.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# 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 :-(
|
|
if which clang 2>/dev/null >/dev/null
|
|
then CC=clang
|
|
elif which gcc 2>/dev/null >/dev/null
|
|
then CC=gcc
|
|
else echo "Can't find a compiler, skipping test"
|
|
exit 0
|
|
fi
|
|
|
|
ARCH=`uname -p`
|
|
|
|
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
|
|
Of shoes and ships and sealing wax of cabbages and kings
|
|
Of why the sea is boiling hot and whether pigs have wings
|
|
END
|
|
f=file # scratch file
|
|
|
|
cat >makefile <<END # create a makefile
|
|
all: x.c
|
|
@$CC x.c >/dev/null 2>&1
|
|
END
|
|
cat >x.c <<END # create a C program
|
|
#include <stdio.h>
|
|
char s[] = {"MS-DOS: Just say no"}; /* used by strings later */
|
|
main()
|
|
{
|
|
int i;
|
|
for (i = 15; i < 18; i++) printf("%d\\n",i*i);
|
|
}
|
|
END
|
|
|
|
cat >answer <<END # C program should produce these results
|
|
225
|
|
256
|
|
289
|
|
END
|
|
|
|
make
|
|
if test -f a.out; then : ; else bomb "Compilation failed"; fi
|
|
a.out >x
|
|
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 bomb "Error on chmod test 1"; fi
|
|
chmod 377 x
|
|
if test -r x; then test -w / || bomb "Error on chmod test 2"; fi
|
|
chmod 700 x
|
|
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
|
|
1 white bunny
|
|
2 gray rabbits
|
|
3 brown hares
|
|
4 black conies
|
|
END
|
|
|
|
cat >answer <<END # after cutting out cols 3-7, we get this
|
|
white
|
|
gray
|
|
brown
|
|
black
|
|
END
|
|
|
|
cut -c 3-7 x >y # extract columns 3-7
|
|
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 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 bomb "Error in df Test 1"; fi
|
|
|
|
#Test du # see df
|
|
rm ?
|
|
du >x
|
|
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
|
|
if [ $ARCH = i86 -o $ARCH = i386 -o $ARCH = arm ]
|
|
then
|
|
cat >answer <<END
|
|
0000000 064124 020145 064564 062555 064040 071541 061440 066557
|
|
0000020 020145 064164 020145 060567 071154 071565 071440 064541
|
|
0000040 020144 067564 072040 066141 020153 063157 066440 067141
|
|
0000060 020171 064164 067151 071547 000012
|
|
0000071
|
|
END
|
|
else
|
|
cat >answer <<END
|
|
0000000 052150 062440 072151 066545 020150 060563 020143 067555
|
|
0000020 062440 072150 062440 073541 066162 072563 020163 060551
|
|
0000040 062040 072157 020164 060554 065440 067546 020155 060556
|
|
0000060 074440 072150 064556 063563 005000
|
|
0000071
|
|
END
|
|
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 -o $ARCH = arm ]
|
|
then
|
|
cat >answer <<END
|
|
0000000 26708 08293 26996 25965 26656 29537 25376 28015
|
|
0000020 08293 26740 08293 24951 29292 29557 29472 26977
|
|
0000040 08292 28532 29728 27745 08299 26223 27936 28257
|
|
0000060 08313 26740 28265 29543 00010
|
|
0000071
|
|
END
|
|
else
|
|
cat >answer <<END
|
|
0000000 21608 25888 29801 28005 08296 24947 08291 28525
|
|
0000020 25888 29800 25888 30561 27762 30067 08307 24937
|
|
0000040 25632 29807 08308 24940 27424 28518 08301 24942
|
|
0000060 31008 29800 26990 26483 02560
|
|
0000071
|
|
END
|
|
fi
|
|
|
|
if cmp -s x answer; then : ; else bomb "Error in od test 2"; fi
|
|
|
|
#Test paste
|
|
cat >x <<END
|
|
red
|
|
green
|
|
blue
|
|
END
|
|
|
|
cat >y <<END
|
|
rood
|
|
groen
|
|
blauw
|
|
END
|
|
cat >answer <<END
|
|
red rood
|
|
green groen
|
|
blue blauw
|
|
END
|
|
|
|
paste x y >z
|
|
if cmp -s z answer; then : ; else bomb "Error in paste test 1"; fi
|
|
|
|
#Test prep
|
|
prep >x <<END
|
|
"Hi," said Carol, laughing, "How's life?"
|
|
END
|
|
|
|
cat >answer <<END
|
|
hi
|
|
said
|
|
carol
|
|
laughing
|
|
how's
|
|
life
|
|
END
|
|
|
|
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 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 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
|
|
cat >answer <<END
|
|
MS-DOS: Just say no
|
|
END
|
|
|
|
if cmp -s x answer; then : ; else bomb "Error in strings test 1"; fi
|
|
|
|
#Test sum
|
|
sum $f >x
|
|
cat >answer <<END
|
|
29904 1 $f
|
|
END
|
|
|
|
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 bomb "Error in tee test 1"; fi
|
|
|
|
#Test true
|
|
if true ; then : ; else bomb "Error in true test 1"; fi
|
|
|
|
#Test uniq
|
|
cat >x <<END
|
|
100
|
|
200
|
|
200
|
|
300
|
|
END
|
|
|
|
cat >answer <<END
|
|
100
|
|
200
|
|
300
|
|
END
|
|
|
|
uniq <x >y
|
|
if cmp -s y answer; then : ; else bomb "Error in uniq test 1"; fi
|
|
|
|
#Test pipelines
|
|
cat >x <<END
|
|
the big black dog
|
|
the little white cat
|
|
the big white sheep
|
|
the little black cat
|
|
END
|
|
|
|
cat >answer <<END
|
|
1 dog
|
|
1 sheep
|
|
2 big
|
|
2 black
|
|
2 cat
|
|
2 little
|
|
2 white
|
|
4 the
|
|
END
|
|
|
|
prep x | sort | uniq -c >y1
|
|
sort <y1 >y
|
|
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 bomb "Error in pipeline test 2"; fi
|
|
|
|
cd ..
|
|
rm -rf $TESTDIR
|
|
|
|
echo ok
|