-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathruntests.sh
executable file
·102 lines (95 loc) · 2.98 KB
/
runtests.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash
TEMPDIR=/tmp
eval `luarocks path`
if [ $# = 0 ] ; then
TESTS=tests/*.lua
else
TESTS=$@
fi
# Clean up previous test results
rm -f $TEMPDIR/lua2ps*
# Run test procedure for each test
NUMPASSED=0
NUMFAILED=0
for testscript in $TESTS ; do
TESTNAME=`basename $testscript`
echo
echo Running test $TESTNAME
# Run test with lua interpreter
echo lua ./$testscript \
\> $TEMPDIR/lua2ps.$TESTNAME.stdout.lua \
2\> $TEMPDIR/lua2ps.$TESTNAME.stderr.lua &&
lua ./$testscript \
> $TEMPDIR/lua2ps.$TESTNAME.stdout.lua \
2> $TEMPDIR/lua2ps.$TESTNAME.stderr.lua &&
# Translate test to PostScript
echo lua lua2ps.lua $testscript $TEMPDIR/lua2ps.$TESTNAME.ps \
\> $TEMPDIR/lua2ps.$TESTNAME.stdout.trans \
2\> $TEMPDIR/lua2ps.$TESTNAME.stderr.trans &&
lua lua2ps.lua $testscript $TEMPDIR/lua2ps.$TESTNAME.ps \
> $TEMPDIR/lua2ps.$TESTNAME.stdout.trans \
2> $TEMPDIR/lua2ps.$TESTNAME.stderr.trans &&
# Run the test in PostScript
echo gs -sDEVICE=nullpage -q $TEMPDIR/lua2ps.$TESTNAME.ps \
\> $TEMPDIR/lua2ps.$TESTNAME.stdout.ps \
2\> $TEMPDIR/lua2ps.$TESTNAME.stderr.ps &&
gs -sDEVICE=nullpage -q $TEMPDIR/lua2ps.$TESTNAME.ps \
> $TEMPDIR/lua2ps.$TESTNAME.stdout.ps \
2> $TEMPDIR/lua2ps.$TESTNAME.stderr.ps
# Any error?
PASSED=n
if [ -s $TEMPDIR/lua2ps.$TESTNAME.stderr.lua ] ; then
echo 'stderr from lua'
cat $TEMPDIR/lua2ps.$TESTNAME.stderr.lua
else
if [ -s $TEMPDIR/lua2ps.$TESTNAME.stderr.trans ] ; then
echo 'stderr from lua2ps'
cat $TEMPDIR/lua2ps.$TESTNAME.stderr.trans
else
if [ -s $TEMPDIR/lua2ps.$TESTNAME.stderr.ps ] ; then
echo 'stderr from gs'
cat $TEMPDIR/lua2ps.$TESTNAME.stderr.ps
else
# Nothing on stderr! Compare results!
if cmp -s $TEMPDIR/lua2ps.$TESTNAME.stdout.lua $TEMPDIR/lua2ps.$TESTNAME.stdout.ps ; then
PASSED=y
echo [1\;32mTest passed![0m
else
echo $TEMPDIR/lua2ps.$TESTNAME.stdout.lua '(stdout from lua)'
cat $TEMPDIR/lua2ps.$TESTNAME.stdout.lua
echo $TEMPDIR/lua2ps.$TESTNAME.stdout.ps '(stdout from gs)'
cat $TEMPDIR/lua2ps.$TESTNAME.stdout.ps
fi
fi
fi
fi
if [ $PASSED = n ] ; then
echo [1\;41mTest failed![0m
NUMFAILED=$((NUMFAILED + 1))
else
NUMPASSED=$((NUMPASSED + 1))
fi
if [ -n "$SAVE_TEST_RESULTS" ] ; then
echo -n $PASSED > "$testscript.passing.2"
fi
done
echo Summary:
echo $NUMPASSED passed / $NUMFAILED failed
if [ -n "$SAVE_TEST_RESULTS" ] ; then
for testscript in $TESTS ; do
echo -n "$testscript "
if [ -a "$testscript.passing" ] ; then
R=$(cat "$testscript.passing")
[ "$R" = y ] && echo -n [1\;32my[0m || echo -n [1\;41mn[0m
else
echo -n '-'
fi
echo -n ' '
R=$(cat "$testscript.passing.2")
[ "$R" = y ] && echo -n [1\;32my[0m || echo -n [1\;41mn[0m
echo
if [ -n "$OVERWRITE_TEST_RESULTS" ] ; then
mv "$testscript.passing.2" "$testscript.passing"
fi
done
fi