osrm-backend/third_party/variant/scripts/run_compilation_failure_tests.sh
2016-12-01 15:44:27 -08:00

50 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
#
# Try to compile all programs in the test/compilation_failure directory.
# Compilation must fail and the error message must match the pattern in the
# corresponding .pattern file.
#
DIR="test/compilation_failure"
CXX=${CXX:-clang++}
if [ `uname -s` = "Darwin" ]; then
CXXFLAGS="$CXXFLAGS -stdlib=libc++"
fi
error_msg() {
if [ ! -z "$1" ]; then
printf 'output was:\n=======\n%s\n=======\n' "$1"
fi
}
exit_code=0
for test_code in $DIR/*.cpp; do
name=`basename $test_code .cpp`
result=`${CXX} -std=c++11 -c -o /dev/null -I./include ${CXXFLAGS} ${test_code} 2>&1`
status=$?
if [ $status = 1 ]; then
expected=`sed -n -e '/@EXPECTED/s/.*: \+//p' ${test_code}`
if echo $result | grep -q "$expected"; then
echo "$name [OK]"
else
echo "$name [FAILED - wrong error message]"
echo "Expected error message: $expected"
error_msg "$result"
exit_code=1
fi
elif [ $status = 0 ]; then
echo "$name [FAILED - compile was successful]"
error_msg "$result"
exit_code=1
else
echo "$name [FAILED - unknown error in compile]"
error_msg "$result"
exit_code=1
fi
done
exit ${exit_code}