diff options
Diffstat (limited to 'test_parser.sh')
-rwxr-xr-x | test_parser.sh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test_parser.sh b/test_parser.sh new file mode 100755 index 0000000..cddc491 --- /dev/null +++ b/test_parser.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# script to test the lexer + +echo "========================================" +echo " Cleaning the temporaries and outputs" +make clean +echo " Force building lexer" +make -B bin/c_parser + +if [[ "$?" -ne 0 ]]; then + echo "Build failed."; +fi + +echo "" +echo "" +echo "=========================================" +echo " Testing parser" + +PASSED=0 +CHECKED=0 + +for i in c_parser/test/in/*.c; do + echo "===========================" + echo "" + echo "Input file : ${i}" + BASENAME=$(basename $i .c); + cat $i | ./bin/c_parser > c_parser/test/out/$BASENAME.stdout.xml 2> c_parser/test/out/$BASENAME.stderr.txt + tidy -xml -i -q -o c_parser/test/out/$BASENAME.pretty.xml c_parser/test/out/$BASENAME.stdout.xml + + diff <(cat c_parser/test/ref/$BASENAME.stdout.xml | tidy -xml -i -q) <(cat c_parser/test/out/$BASENAME.stdout.xml | tidy -xml -i -q) > c_parser/test/out/$BASENAME.diff.txt + if [[ "$?" -ne "0" ]]; then + echo -e "\nERROR" + else + PASSED=$(( ${PASSED}+1 )); + fi + CHECKED=$(( ${CHECKED}+1 )); +done + +echo "########################################" +echo "Passed ${PASSED} out of ${CHECKED}". +echo "" |