diff --git a/Apps/FiniteDefElasticity/CMakeLists.txt b/Apps/FiniteDefElasticity/CMakeLists.txt index b81de125..11b25044 100644 --- a/Apps/FiniteDefElasticity/CMakeLists.txt +++ b/Apps/FiniteDefElasticity/CMakeLists.txt @@ -169,7 +169,7 @@ ADD_CUSTOM_TARGET(doc doxygen FILE(GLOB_RECURSE NONLINEL_TESTFILES "${PROJECT_SOURCE_DIR}/Test/*.reg") FOREACH(TESTFILE ${NONLINEL_TESTFILES}) - ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/../../test/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/NonLinEl" "${TESTFILE}") + ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/../../scripts/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/NonLinEl" "${TESTFILE}") ENDFOREACH() IF(NOT IFEM_INSTALL_PREFIX) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4c848a3..082a2b3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -200,12 +200,12 @@ ADD_CUSTOM_TARGET(doc doxygen # Regression tests FILE(GLOB_RECURSE LINEL_TESTFILES "${PROJECT_SOURCE_DIR}/Apps/LinearElasticity/Test/*.reg") FOREACH(TESTFILE ${LINEL_TESTFILES}) - ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/test/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/LinEl" "${TESTFILE}") + ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/scripts/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/LinEl" "${TESTFILE}") ENDFOREACH() FILE(GLOB_RECURSE POISSON_TESTFILES "${PROJECT_SOURCE_DIR}/Apps/Poisson/Test/*.reg") FOREACH(TESTFILE ${POISSON_TESTFILES}) - ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/test/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/Poisson" "${TESTFILE}") + ADD_TEST(${TESTFILE} ${PROJECT_SOURCE_DIR}/scripts/regtest.sh "${CMAKE_BINARY_DIR}/${EXECUTABLE_OUTPUT_PATH}/Poisson" "${TESTFILE}") ENDFOREACH() IF(NOT IFEM_INSTALL_PREFIX) diff --git a/scripts/doregtests.sh b/scripts/doregtests.sh new file mode 100755 index 00000000..422b08fa --- /dev/null +++ b/scripts/doregtests.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Convenience script that compiles and runs all regression tests + +ROOT=`readlink -f $0` +ROOT=`dirname $ROOT`/.. +PATHS=". Apps/Stokes Apps/FiniteDefElasticity" + +rm -f $ROOT/failed.log + +globres=0 +for p in $PATHS +do + cd $ROOT/$p + mkdir Release-Testing + cd Release-Testing + cmake $ROOT/$p -DDISABLE_HDF5=1 -DCMAKE_BUILD_TYPE=Release -DIFEM_BUILD_TYPE=Release-Testing + make -j3 + if ! make test + then + globres=1 + fi +done + +if test $globres -eq 1 +then + echo "Some tests failed, see failed.log in root of repository for details" +fi + +for p in $PATHS +do + rm $ROOT/$p/Release-Testing -rf +done diff --git a/scripts/regtest.sh b/scripts/regtest.sh new file mode 100755 index 00000000..c9af7d52 --- /dev/null +++ b/scripts/regtest.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# This script performs a single regression. +# It is used by the 'make test' target in the buildsystems +# Usually you should use 'make test' rather than calling this script directly +# +# Parameters: $1 = Application binary +# $2 = Regression test file +# +# A regression test file is of the format: +# parameters to application +# blank line +# output from program to compare to + +mysim=$1 + +cd `dirname $2` +readarray < $2 +$mysim $MAPFILE 2>&1 > templog +globres=1 +IFS=$'\n' +for line in `cat $2` +do + test -z "$line" && continue + echo "$line" | grep -q ".inp" && continue + result=0 + if grep -q "$line" templog + then result=1 + fi + if test $result -eq 0 + then + if test $globres -eq 1 + then + echo "-------- $2 --------" >> ../../../failed.log + fi + globres=0 + echo Failed to find output: $line >> ../../../failed.log + fi +done + +if test $globres -eq 0 +then + cat templog >> ../../../failed.log + rm templog + exit 1 +fi + +rm templog +exit 0 diff --git a/Apps/run.sh b/scripts/run.sh similarity index 100% rename from Apps/run.sh rename to scripts/run.sh