Commit ac4550ccbd99800a1ebd6b9fb57190a3728354bb

Steffen Jaeckel 2015-04-18T14:10:45

testme.sh: improve a bit - 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)

diff --git a/testme.sh b/testme.sh
index 8b65d2e..42544d9 100755
--- a/testme.sh
+++ b/testme.sh
@@ -1,24 +1,82 @@
-#!/bin/bash -e
+#!/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 "Run test $1 $2"
+  echo -ne " Compile $1 $2"
   make clean > /dev/null
-  CC="$1" CFLAGS="$2" make test_standalone -j9 > /dev/null 2>test_gcc_errors.txt
-  ./test > test_$(echo ${1}${2}  | tr ' ' '_').txt
+  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" $?
 }
 
-_runtest "gcc" ""
-_runtest "gcc" "-DMP_8BIT"
-_runtest "gcc" "-DMP_16BIT"
-_runtest "gcc" "-DMP_32BIT"
-_runtest "gcc -m32" ""
-_runtest "gcc -m32" "-DMP_8BIT"
-# mh, this configuration does not work! it gets stuck at
-# Testing (not safe-prime):        46 bits
-#_runtest "gcc -m32" "-DMP_16BIT"
-_runtest "gcc -m32" "-DMP_32BIT"
-_runtest "gcc -mx32" ""
-_runtest "gcc -mx32" "-DMP_8BIT"
-_runtest "gcc -mx32" "-DMP_16BIT"
-_runtest "gcc -mx32" "-DMP_32BIT"
+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