11591693c7b415e9869157c711fe11263c95d74eDavid Li#!/bin/sh
21591693c7b415e9869157c711fe11263c95d74eDavid Li
31591693c7b415e9869157c711fe11263c95d74eDavid Litrap 'rm $test.valgrind-errors; exit 1' INT QUIT
41591693c7b415e9869157c711fe11263c95d74eDavid Li
51591693c7b415e9869157c711fe11263c95d74eDavid Litotal=0
61591693c7b415e9869157c711fe11263c95d74eDavid Lipass=0
71591693c7b415e9869157c711fe11263c95d74eDavid Liclean=0
81591693c7b415e9869157c711fe11263c95d74eDavid Li
91591693c7b415e9869157c711fe11263c95d74eDavid Liecho "====== Testing for correctness ======"
101591693c7b415e9869157c711fe11263c95d74eDavid Lifor test in *.c; do
111591693c7b415e9869157c711fe11263c95d74eDavid Li    echo -n "Testing $test..."
121591693c7b415e9869157c711fe11263c95d74eDavid Li    ../glcpp < $test > $test.out 2>&1
131591693c7b415e9869157c711fe11263c95d74eDavid Li    total=$((total+1))
141591693c7b415e9869157c711fe11263c95d74eDavid Li    if cmp $test.expected $test.out >/dev/null 2>&1; then
151591693c7b415e9869157c711fe11263c95d74eDavid Li	echo "PASS"
161591693c7b415e9869157c711fe11263c95d74eDavid Li	pass=$((pass+1))
171591693c7b415e9869157c711fe11263c95d74eDavid Li    else
181591693c7b415e9869157c711fe11263c95d74eDavid Li	echo "FAIL"
191591693c7b415e9869157c711fe11263c95d74eDavid Li	diff -u $test.expected $test.out
201591693c7b415e9869157c711fe11263c95d74eDavid Li    fi
211591693c7b415e9869157c711fe11263c95d74eDavid Lidone
221591693c7b415e9869157c711fe11263c95d74eDavid Li
231591693c7b415e9869157c711fe11263c95d74eDavid Liecho ""
241591693c7b415e9869157c711fe11263c95d74eDavid Liecho "$pass/$total tests returned correct results"
251591693c7b415e9869157c711fe11263c95d74eDavid Liecho ""
261591693c7b415e9869157c711fe11263c95d74eDavid Li
271591693c7b415e9869157c711fe11263c95d74eDavid Liecho "====== Testing for valgrind cleanliness ======"
281591693c7b415e9869157c711fe11263c95d74eDavid Lifor test in *.c; do
291591693c7b415e9869157c711fe11263c95d74eDavid Li    echo -n "Testing $test with valgrind..."
301591693c7b415e9869157c711fe11263c95d74eDavid Li    valgrind --error-exitcode=31 --log-file=$test.valgrind-errors ../glcpp < $test >/dev/null 2>&1
311591693c7b415e9869157c711fe11263c95d74eDavid Li    if [ "$?" = "31" ]; then
321591693c7b415e9869157c711fe11263c95d74eDavid Li	echo "ERRORS"
331591693c7b415e9869157c711fe11263c95d74eDavid Li	cat $test.valgrind-errors
341591693c7b415e9869157c711fe11263c95d74eDavid Li    else
351591693c7b415e9869157c711fe11263c95d74eDavid Li	echo "CLEAN"
361591693c7b415e9869157c711fe11263c95d74eDavid Li	clean=$((clean+1))
371591693c7b415e9869157c711fe11263c95d74eDavid Li	rm $test.valgrind-errors
381591693c7b415e9869157c711fe11263c95d74eDavid Li    fi
391591693c7b415e9869157c711fe11263c95d74eDavid Lidone
401591693c7b415e9869157c711fe11263c95d74eDavid Li
411591693c7b415e9869157c711fe11263c95d74eDavid Liecho ""
421591693c7b415e9869157c711fe11263c95d74eDavid Liecho "$pass/$total tests returned correct results"
431591693c7b415e9869157c711fe11263c95d74eDavid Liecho "$clean/$total tests are valgrind-clean"
441591693c7b415e9869157c711fe11263c95d74eDavid Li
451591693c7b415e9869157c711fe11263c95d74eDavid Liif [ "$pass" = "$total" ] && [ "$clean" = "$total" ]; then
461591693c7b415e9869157c711fe11263c95d74eDavid Li    exit 0
471591693c7b415e9869157c711fe11263c95d74eDavid Lielse
481591693c7b415e9869157c711fe11263c95d74eDavid Li    exit 1
491591693c7b415e9869157c711fe11263c95d74eDavid Lifi
501591693c7b415e9869157c711fe11263c95d74eDavid Li
51