File: test-yacas-c-version

package info (click to toggle)
mathpiper 0.0.svn2556-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 7,416 kB
  • ctags: 2,729
  • sloc: java: 21,643; xml: 751; sh: 105; makefile: 5
file content (139 lines) | stat: -rw-r--r-- 3,600 bytes parent folder | download | duplicates (3)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#! /bin/sh
#
# test-yacas -- Script for testing Yacas

# Give help, if requested

if [ $# -eq 0 ] || [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ]; then
    echo "Usage: $0 <cmd> <dir> <script>..."
    echo "  cmd       Command plus options, needed to run Yacas"
    echo "  dir       Directory in which scripts reside"
    echo "  script... Test scripts to be run"
    echo "Test script may reside in <dir> or in the current directory"
    echo "Exit status is number of tests scripts which fail"
    echo "Example:"
    echo "  $0 \"../src/Debug/yacas --archive ../src/scripts.dat\" . short*.yts"
    exit 0
fi

# Parse arguments

if [ $# -lt 2 ]; then
    echo "Error: $0: Missing parameters"
    exit 255
fi

CMD="$1"
SCRIPTDIR="$2"
shift
shift
SCRIPTS=$*

# run the tests

FAILED_TESTS=""  # list of failed tests
FAILURES=0       # number of failed tests
TOTALTESTS=0     # total number of tests

TESTFILE=/tmp/test-yacas.$$
TIMEFILE=/tmp/time-yacas.$$
VERSIONF=/tmp/version-yacas-$$.ys
LOGFILE=yacas-logfile.txt
echo "Print(Version());" > $VERSIONF
VERSION=`$CMD $VERSIONF`
COMMENT=`$CMD $VERSIONF`
#DATECMD="date \"+%F %T\""
#echo "$DATECMD"
#rm $VERSIONF

echo "/*" >> $LOGFILE
echo "Command = \"$CMD\""      | tee -a $LOGFILE
echo "Version = $VERSION"      | tee -a $LOGFILE
echo "Comment = $COMMENT"      | tee -a $LOGFILE
echo "Date = \"`date "+%F %T"`\""   | tee -a $LOGFILE
echo "Logfile = \"$LOGFILE\""  | tee -a $LOGFILE
echo "*/" >> $LOGFILE

REALTOT="0"
USERTOT="0"
SYSSTOT="0"

for scr in $SCRIPTS; do
    if [ -f $SCRIPTDIR/$scr ]; then
	   f=$SCRIPTDIR/$scr
    else
	   f=$scr
    fi
#		if grep -i "interrupt" $TESTFILE > /dev/null; then
#			PASSFAIL=Interrupted
#		fi
    echo "Running $scr"
	if [ -f $TESTFILE ]; then rm $TESTFILE ; fi
    /bin/sh -c "time -p ($CMD $f || echo \"Error: exit status $?\") | tee $TESTFILE" \
		2> $TIMEFILE \
		|| (echo "Error -- User interrupt" > $TESTFILE)
#	cat $TIMEFILE
    if grep -E "\*\*\*\*\*\*|Error|interrupt" $TESTFILE > /dev/null; then
        PASSFAIL=Fail
        FAILED_TESTS="$FAILED_TESTS $scr"
        FAILURES=`expr $FAILURES + 1`
		if grep -i "interrupt" $TESTFILE > /dev/null; then
			PASSFAIL=Interrupted
		fi
    else
        PASSFAIL=Pass
    fi
    TOTALTESTS=`expr $TOTALTESTS + 1`

    REAL=`grep real $TIMEFILE | sed 's/real//'`
    USER=`grep user $TIMEFILE | sed 's/user//'`
    SYSS=`grep sys  $TIMEFILE | sed 's/sys//'`
    LOGLINE="{\"$scr\", $VERSION, \"`date "+%F %T"`\", $REAL, $USER, $SYSS, $PASSFAIL},"
    echo "$LOGLINE" | tee -a $LOGFILE

	REALTOT="$REALTOT+$REAL"
	USERTOT="$USERTOT+$USER"
	SYSSTOT="$SYSSTOT+$SYSS"
### exit

done

if [ $FAILURES -eq 0 ]; then
    PASSFAIL=Pass
else
    PASSFAIL=Fail
fi
REAL=`$CMD -i "Print(RoundTo($REALTOT,2));"`
USER=`$CMD -i "Print(RoundTo($USERTOT,2));"`
SYSS=`$CMD -i "Print(RoundTo($SYSSTOT,2));"`
LOGLINE="{\"Total\", $VERSION, \"`date "+%F %T"`\", $REAL, $USER, $SYSS, $PASSFAIL},"
echo "$LOGLINE" | tee -a $LOGFILE

rm $TESTFILE $TIMEFILE

# report

if [ $FAILURES -eq 0 ]; then
    RES="All $TOTALTESTS tests PASSED"
else
    if [ $FAILURES -eq 1 ]; then
        echo "Failed test: $FAILED_TESTS"
    else
        echo "Failed tests: $FAILED_TESTS"
    fi
    RES="$FAILURES of $TOTALTESTS tests FAILED"
fi
EQS=`echo $RES | sed 's/./=/g'`

echo "Command = \"$CMD\""
echo "Version = $VERSION"
echo "Date = \"`date "+%F %T"`\""
echo "Logfile = \"$LOGFILE\""
echo "/*$EQS" | tee -a $LOGFILE
if [ "x$FAILED_TESTS" != "x" ]; then
    echo "Failed = $FAILED_TESTS" | tee -a $LOGFILE
fi
echo " $RES " | tee -a $LOGFILE
echo "$EQS*/" | tee -a $LOGFILE

exit $FAILURES