We recently added several tests that intentionally trigger
preprocessor errors. During valgrind-based testing, our test script
was noticing the non-zero return value from the preprocessor and
incorrectly flagging the valgrind-based test as failing.
To fix this, we make valgrind return an error code that is otherwise
unused by the preprocessor.
echo "====== Testing for valgrind cleanliness ======"
for test in *.c; do
echo -n "Testing $test with valgrind..."
- if valgrind --error-exitcode=1 --log-file=$test.valgrind-errors ../glcpp < $test >/dev/null; then
+ valgrind --error-exitcode=31 --log-file=$test.valgrind-errors ../glcpp < $test >/dev/null 2>&1
+ if [ "$?" = "31" ]; then
+ echo "ERRORS"
+ cat $test.valgrind-errors
+ else
echo "CLEAN"
clean=$((clean+1))
rm $test.valgrind-errors
- else
- echo "ERRORS"
- cat $test.valgrind-errors
fi
done