mirror of https://github.com/procxx/kepka.git
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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}
 |