- add parameter when calling that will be forwarded to make (e.g. to give the correct -j# option for your CPU) - timeout after running the tests for 2 minutes, assuming something went wrong, but don't cancel the rest of the tests - add compilation with clang (if available on the system)
		
			
				
	
	
		
			83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# return values of this script are:
 | 
						|
#   0  success
 | 
						|
# 128  a test failed
 | 
						|
#  >0  the number of timed-out tests
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
ret=0
 | 
						|
TEST_CFLAGS=""
 | 
						|
 | 
						|
if [ "$#" == "1" ]
 | 
						|
then
 | 
						|
  MAKE_OPTIONS=$1
 | 
						|
fi
 | 
						|
 | 
						|
_die()
 | 
						|
{
 | 
						|
  echo "error $2 while $1"
 | 
						|
  if [ "$2" != "124" ]
 | 
						|
  then
 | 
						|
    exit 128
 | 
						|
  else
 | 
						|
    echo "assuming timeout while running test - continue"
 | 
						|
    ret=$(( $ret + 1 ))
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
_runtest()
 | 
						|
{
 | 
						|
  echo -ne " Compile $1 $2"
 | 
						|
  make clean > /dev/null
 | 
						|
  CC="$1" CFLAGS="$2 $TEST_CFLAGS" make test_standalone $MAKE_OPTIONS > /dev/null 2>test_errors.txt
 | 
						|
  echo -e "\rRun test $1 $2"
 | 
						|
  timeout --foreground 120 ./test > test_$(echo ${1}${2}  | tr ' ' '_').txt || _die "running tests" $?
 | 
						|
}
 | 
						|
 | 
						|
compilers=( clang gcc )
 | 
						|
 | 
						|
echo "uname="$(uname -a)
 | 
						|
 | 
						|
for i in "${compilers[@]}"
 | 
						|
do
 | 
						|
  if [ -z "$(which $i)" ]
 | 
						|
  then
 | 
						|
    continue
 | 
						|
  fi
 | 
						|
  compiler_version=$(echo "$i="$($i -dumpversion))
 | 
						|
  if [ "$compiler_version" == "clang=4.2.1" ]
 | 
						|
  then
 | 
						|
    # one of my versions of clang complains about some stuff in stdio.h and stdarg.h ...
 | 
						|
    TEST_CFLAGS="-Wno-typedef-redefinition"
 | 
						|
  else
 | 
						|
    TEST_CFLAGS=""
 | 
						|
  fi
 | 
						|
  echo $compiler_version
 | 
						|
  _runtest "$i" ""
 | 
						|
  _runtest "$i" "-DMP_8BIT"
 | 
						|
  _runtest "$i" "-DMP_16BIT"
 | 
						|
  _runtest "$i" "-DMP_32BIT"
 | 
						|
  _runtest "$i -m32" ""
 | 
						|
  _runtest "$i -m32" "-DMP_8BIT"
 | 
						|
  _runtest "$i -m32" "-DMP_16BIT"
 | 
						|
  _runtest "$i -m32" "-DMP_32BIT"
 | 
						|
  if [ "$i" != "clang" ]
 | 
						|
  then
 | 
						|
    _runtest "$i -mx32" ""
 | 
						|
    _runtest "$i -mx32" "-DMP_8BIT"
 | 
						|
    _runtest "$i -mx32" "-DMP_16BIT"
 | 
						|
    _runtest "$i -mx32" "-DMP_32BIT"
 | 
						|
  fi
 | 
						|
done
 | 
						|
 | 
						|
if [ "$ret" == "0" ]
 | 
						|
then
 | 
						|
  echo "Tests successful"
 | 
						|
else
 | 
						|
  echo "$ret tests timed out"
 | 
						|
fi
 | 
						|
 | 
						|
exit $ret
 |