/
prepTests.sh
executable file
·77 lines (64 loc) · 1.82 KB
/
prepTests.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
#!/bin/bash
RED='\033[0;31m'
NC='\033[0m'
BLUE='\033[0;34m'
ORANGE='\033[;33m'
PINK='\033[;35m'
EXT=".java"
error=0
fails=0
tests=0
compFail=0
typeFail=0
runFail=0
pass=0
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
if [ "$dir" != "" ]; then
cd $dir
fi
rm filesToTest/*
for file in *.java
do
tests=$((tests+1))
printf "Test Case: %s\n" $file
../mjavac $file
if [ $? -eq 0 ]; then
outputFileName="${file%%.*}.s"
printf "Output file name: %s\n" $outputFileName
solutionsFileName="${file%%.*}.txt"
mv ${outputFileName} filesToTest/
javac $file
if [ $? -eq 0 ]; then
for classFile in p_*.class
do
name="${classFile%%.*}"
java $name > filesToTest/${solutionsFileName}
done
for tempFile in *.class
do
rm $tempFile
done
else
printf "${ORANGE}Test case %s Failed to compile with javac\n\n${NC}" $file
compFail=$((compFail+1))
fi
else
cat userOutput.txt
printf "${RED}Test Case %s Failed in TypeChecking\n\n${NC}" $file
fails=$((fails+1))
typeFail=$((typeFail+1))
fi
done
rm javaOutput.txt
rm userOutput.txt
printf "=================================================\n"
printf "Finished testing with %d Failures out of %d tests\n" $fails $tests
printf "\n"
printf "Passes: %d\n" $pass
printf "Grammar and Type checking failures: %d\n" $typeFail
printf "Interpretation failures: %d\n" $runFail
if [ $compFail -ne 0 ]; then
printf "\n"
printf "${ORANGE}%d Test case(s) failed to compile with Javac. Please check the test cases and try to run them again" $compFail
fi
exit 0