Add very basic test framework for parser tests.

Start with a shell script that runs .cton files through 'cton-util cat' and
compares the output to a reference. This can get fancy later.
This commit is contained in:
Jakob Stoklund Olesen
2016-07-05 11:40:42 -07:00
parent 74038d153c
commit 954fd015e0
4 changed files with 58 additions and 0 deletions

40
tests/parser/run.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
# Go to tests directory.
cd $(dirname "$0")/..
# The path to cton-util should be in $CTONUTIL.
if [ -z "$CTONUTIL" ]; then
CTONUTIL=../src/tools/target/debug/cton-util
fi
if [ ! -x "$CTONUTIL" ]; then
echo "Can't fund executable cton-util: $CTONUTIL" 1>&2
exit 1
fi
declare -a fails
for testcase in $(find parser -name '*.cton'); do
ref="${testcase}.ref"
if [ ! -r "$ref" ]; then
fails=(${fails[@]} "$testcase")
echo MISSING: $ref
elif diff -u "$ref" <("$CTONUTIL" cat "$testcase"); then
echo OK $testcase
else
fails=(${fails[@]} "$testcase")
echo FAIL $testcase
fi
done
if [ ${#fails[@]} -ne 0 ]; then
echo
echo Failures:
for f in "${fails[@]}"; do
echo " $f"
done
exit 1
else
echo "All passed"
fi