From c33a7632bef474601457cb6253c49b190f378376 Mon Sep 17 00:00:00 2001
From: Stefan Girke <stefan.girke@wwu.de>
Date: Wed, 1 Jun 2016 18:18:54 +0200
Subject: [PATCH] use dune_add_test_case() to build tests

---
 cmake/modules/DuneFemDgMacros.cmake           | 27 +++++--
 cmake/scripts/parameter.in                    |  6 +-
 .../examples/advdiff/test/CMakeLists.txt      | 74 +++++++++----------
 .../examples/dataio/test/CMakeLists.txt       | 12 +--
 .../fem-dg/examples/euler/test/CMakeLists.txt | 18 ++---
 .../incompnavierstokes/test/CMakeLists.txt    | 16 ++--
 .../examples/navierstokes/test/CMakeLists.txt | 16 ++--
 .../examples/poisson/test/CMakeLists.txt      | 16 ++--
 .../examples/stokes/test/CMakeLists.txt       | 16 ++--
 9 files changed, 87 insertions(+), 114 deletions(-)

diff --git a/cmake/modules/DuneFemDgMacros.cmake b/cmake/modules/DuneFemDgMacros.cmake
index dc92fc91..f1cec97d 100644
--- a/cmake/modules/DuneFemDgMacros.cmake
+++ b/cmake/modules/DuneFemDgMacros.cmake
@@ -1,6 +1,8 @@
 # the main files for all the tests are in the same dir
 set(FEMDG_MAIN_DIR "${CMAKE_SOURCE_DIR}/dune/fem-dg/main")
 
+
+
 # macro for configuring the parameter files from parameter.in
 function(configure_parameter_file)
   set(CURRENT_PARAMETER_PATH ${CMAKE_CURRENT_SOURCE_DIR})
@@ -25,12 +27,25 @@ function(configure_parameter_file)
 
 endfunction(configure_parameter_file)
 
-function(dune_add_test_case base_target)
-  foreach( testcase ${ARGN})
-    set( TESTCASE_PARAMFILE parameters/${base_target}_${testcase} )
-    configure_parameter_file( ${testcase} ${TESTCASE_PARAMFILE} )
-    add_test( NAME ${base_target}_${testcase} COMMAND ./${base_target} ${TESTCASE_PARAMFILE} )
-  endforeach()
+function(dune_add_test_case target paramfile )
+  set( abbr "${CMAKE_CURRENT_SOURCE_DIR}/" )
+  set( default_params "fem.verboserank:0" "fem.prefix:${abbr}data/${paramfile}" "fem.prefix.input:${abbr}" "fem.eoc.outputpath:${abbr}data/${paramfile}" )
+
+  if( "${target}" STREQUAL NAME )
+    ##copy configure file for target calls without testing tools
+    #configure_parameter_file( ${paramfile} )
+    configure_parameter_file()
+    ##we are creating a real new target
+    dune_add_test( ${target} ${paramfile} ${ARGN} CMD_ARGS ${CMAKE_CURRENT_SOURCE_DIR}/parameters/${paramfile} ${default_params} )
+  else()
+    if(NOT TARGET ${target})
+      message( ERROR "You have tried to create a test case depending on a non existing target. The missing target name is '${target}'" )
+    endif()
+    foreach( testcase ${ARGN})
+      add_test( NAME ${base_name}_${testcase} 
+                COMMAND ./${target} ${CMAKE_CURRENT_SOURCE_DIR}/parameters/${target}_${testcase} ${default_params} )
+    endforeach()
+  endif()
 endfunction()
 
 
diff --git a/cmake/scripts/parameter.in b/cmake/scripts/parameter.in
index 06c7e072..c7a298b7 100644
--- a/cmake/scripts/parameter.in
+++ b/cmake/scripts/parameter.in
@@ -2,8 +2,8 @@
 # (-1: off, p: process p is verbose, in general 0 is a good choice)
 fem.verboserank: 0 
 
-fem.prefix: ${CURRENT_PARAMETER_PATH}/data/${TESTCASE_OUTPUT} # specify directory for data output (is created if not exists)
-fem.prefix.input: ${CURRENT_PARAMETER_PATH}/
-fem.eoc.outputpath: ${CURRENT_PARAMETER_PATH}/data/${TESTCASE_OUTPUT}
+fem.prefix: ${CMAKE_CURRENT_SOURCE_DIR}/data/${TESTCASE_OUTPUT} # specify directory for data output (is created if not exists)
+fem.prefix.input: ${CMAKE_CURRENT_SOURCE_DIR}/
+fem.eoc.outputpath: ${CMAKE_CURRENT_SOURCE_DIR}/data/${TESTCASE_OUTPUT}
 
 paramfile: parameters/${TESTCASE_INPUT} #real parameter file
diff --git a/dune/fem-dg/examples/advdiff/test/CMakeLists.txt b/dune/fem-dg/examples/advdiff/test/CMakeLists.txt
index 33e62a9f..cb3b317c 100644
--- a/dune/fem-dg/examples/advdiff/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/advdiff/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/advdiff/")
 
-configure_parameter_file()
-
 # specify type of grid implemention, dimension and polynomial order
 set( GRIDTYPE ALUGRID_CUBE )
 set( GRIDDIM 2 )
@@ -11,55 +9,49 @@ add_definitions( "-D${GRIDTYPE}" )
 add_definitions( "-DGRIDDIM=${GRIDDIM}" )
 add_definitions( "-DDIMRANGE=1" )
 
-configure_parameter_file( advdiff )
-dune_add_test( NAME advdiff 
-               SOURCES ../main.cc
-               COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
-               TIMEOUT 3000
-               CMD_ARGS parameters/advdiff )
-
+dune_add_test_case( NAME advdiff 
+                    SOURCES ../main.cc
+                    COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
+                    TIMEOUT 3000 )
 add_code_generate_targets( advdiff )
 
-
 if( NOT FEMDG_FAST_TESTBUILD )
-  configure_parameter_file( advdiffall )
-  dune_add_test( NAME advdiffall 
-                 SOURCES ../main.cc
-                 TIMEOUT 3000 
-                 CMD_ARGS parameters/advdiffall )  
-               
-  configure_parameter_file( advdiff_legendre )
-  dune_add_test( NAME advdiff_legendre
-                 SOURCES ../main.cc
-                 COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=2"
-                 TIMEOUT 3000 
-                 CMD_ARGS parameters/advdiff_legendre )
- 
-  configure_parameter_file( advdiff_hierarchic_legendre )
-  dune_add_test( NAME advdiff_hierarchic_legendre
-                 SOURCES ../main.cc
-                 COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=3"
-                 TIMEOUT 3000 
-                 CMD_ARGS parameters/advdiff_hierarchic_legendre )
+  dune_add_test_case( advdiff pulse )
+  dune_add_test_case( advdiff sin )
+  dune_add_test_case( advdiff heat )
+  dune_add_test_case( advdiff quasi )
 
-  configure_parameter_file( advdiff_orthonormal )
-  dune_add_test( NAME advdiff_orthonormal
-                 SOURCES ../main.cc
-                 COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=4"
-                 TIMEOUT 3000 
-                 CMD_ARGS parameters/advdiff_orthonormal )
 
+  dune_add_test_case( NAME advdiffall 
+                      SOURCES ../main.cc
+                      TIMEOUT 3000 )
+  add_code_generate_targets( advdiffall )
   dune_add_test_case( advdiffall polorder1 )
   dune_add_test_case( advdiffall polorder2 )
   dune_add_test_case( advdiffall polorder3 )
   dune_add_test_case( advdiffall polorder4 )
+               
+
+  dune_add_test_case( NAME advdiff_legendre
+                      SOURCES ../main.cc
+                      COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=2"
+                      TIMEOUT 3000 ) 
+ 
+  dune_add_test_case( NAME advdiff_hierarchic_legendre
+                      SOURCES ../main.cc
+                      COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=3"
+                      TIMEOUT 3000 ) 
+
+  dune_add_test_case( NAME advdiff_orthonormal
+                      SOURCES ../main.cc
+                      COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=4"
+                      TIMEOUT 3000 )
+
+  dune_add_test_case( NAME advdiff_orthonormal
+                      SOURCES ../main.cc
+                      COMPILE_DEFINITIONS "POLORDER=${POLORDER};DISCRETEFUNCTIONSPACESENUM=4"
+                      TIMEOUT 3000 )
 
-  dune_add_test_case( advdiff pulse )
-  dune_add_test_case( advdiff sin )
-  dune_add_test_case( advdiff heat )
-  dune_add_test_case( advdiff quasi )
-  
-  add_code_generate_targets( advdiffall )
 endif()
 
 
diff --git a/dune/fem-dg/examples/dataio/test/CMakeLists.txt b/dune/fem-dg/examples/dataio/test/CMakeLists.txt
index a90c02bb..8ef1f663 100644
--- a/dune/fem-dg/examples/dataio/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/dataio/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/dataio/")
 
-configure_parameter_file()
-
 add_definitions( "-DALUGRID_SIMPLEX" )
 add_definitions( "-DGRIDDIM=3" )
 add_definitions( "-DUSE_SIONLIB=0" )
@@ -9,10 +7,8 @@ add_definitions( "-DPOLORDER=2" )
 add_definitions( "-DDIMRANGE=5" )
 add_definitions( "-DENABLE_ADAPTIVELEAFINDEXSET_FOR_YASPGRID" ) 
 
-  #dune_add_test( NAME dataconvert
-  #               SOURCES ../dataconvert.cc )
+  #dune_add_test_case( NAME dataconvert
+  #                    SOURCES ../dataconvert.cc )
 
-configure_parameter_file(checkpointing)
-dune_add_test( NAME checkpointing
-               SOURCES ../main.cc
-               CMD_ARGS parameters/checkpointing )
+dune_add_test_case( NAME checkpointing
+                    SOURCES ../main.cc )
diff --git a/dune/fem-dg/examples/euler/test/CMakeLists.txt b/dune/fem-dg/examples/euler/test/CMakeLists.txt
index 56b35daa..b7ec408a 100644
--- a/dune/fem-dg/examples/euler/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/euler/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/euler/")
 
-configure_parameter_file()
-
 # specify type of grid implemention, dimension and polynomial order
 set( GRIDTYPE ALUGRID_CUBE )
 set( GRIDDIM 2 )
@@ -13,20 +11,16 @@ add_definitions( "-DGRIDDIM=${GRIDDIM}" )
 set( MAIN ${CMAKE_CURRENT_SOURCE_DIR}/../main.cc )
 set( CHORJO ${CMAKE_CURRENT_SOURCE_DIR}/../problems/chorjo.cc )
 
-configure_parameter_file( euler )
-dune_add_test( NAME euler
-               SOURCES ${MAIN} ${CHORJO}
-               COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
-               CMD_ARGS parameters/euler )
+dune_add_test_case( NAME euler
+                    SOURCES ${MAIN} ${CHORJO}
+                    COMPILE_DEFINITIONS "POLORDER=${POLORDER}" )
 
 add_code_generate_targets( euler )
 
 if( NOT FEMDG_FAST_TESTBUILD )
-  configure_parameter_file( eulerall )
-  dune_add_test( NAME eulerall
-                 SOURCES ${MAIN} ${CHORJO}
-                 COMPILE_DEFINITIONS LIMITER
-                 CMD_ARGS parameters/eulerall )
+  dune_add_test_case( NAME eulerall
+                      SOURCES ${MAIN} ${CHORJO}
+                      COMPILE_DEFINITIONS LIMITER )
 
   add_code_generate_targets( eulerall )
 endif()
diff --git a/dune/fem-dg/examples/incompnavierstokes/test/CMakeLists.txt b/dune/fem-dg/examples/incompnavierstokes/test/CMakeLists.txt
index deadaa9a..bb270d9d 100644
--- a/dune/fem-dg/examples/incompnavierstokes/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/incompnavierstokes/test/CMakeLists.txt
@@ -1,24 +1,18 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/incompnavierstokes/")
 
-configure_parameter_file()
-
 # default settings for the test case
 add_definitions( "-DYASPGRID" )
 add_definitions( "-DGRIDDIM=2" )
 
 configure_file( BuildTests.cmake BuildTests.cmake @ONLY)
-#configure_parameter_file( incompnavierstokes )
-#dune_add_test( NAME incompnavierstokes
-#               SOURCES ../main.cc 
-#               COMPILE_DEFINITIONS POLORDER=2
-#               CMD_ARGS parameters/incompnavierstokes )
+#dune_add_test_case( NAME incompnavierstokes
+#                    SOURCES ../main.cc 
+#                    COMPILE_DEFINITIONS POLORDER=2 )
 #add_code_generate_targets( incompnavierstokes )
 #
 #if( NOT FEMDG_FAST_TESTBUILD )
-#  configure_parameter_file( incompnavierstokesall )
-#  dune_add_test( NAME incompnavierstokesall
-#                 SOURCES ../main.cc 
-#                 CMD_ARGS parameters/incompnavierstokesall )
+#  dune_add_test_case( NAME incompnavierstokesall
+#                      SOURCES ../main.cc )
 #  add_code_generate_targets( incompnavierstokesall )
 #endif()
 
diff --git a/dune/fem-dg/examples/navierstokes/test/CMakeLists.txt b/dune/fem-dg/examples/navierstokes/test/CMakeLists.txt
index e0c9afd0..cd69621a 100644
--- a/dune/fem-dg/examples/navierstokes/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/navierstokes/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/navierstokes/")
 
-configure_parameter_file()
-
 # specify type of grid implemention, dimension and polynmomial order
 set( GRIDTYPE ALUGRID_CUBE )
 set( GRIDDIM 2 )
@@ -10,19 +8,15 @@ set( POLORDER 2 )
 add_definitions( "-D${GRIDTYPE}" )
 add_definitions( "-DGRIDDIM=${GRIDDIM}" )
 
-configure_parameter_file( navierstokes )
-dune_add_test( NAME navierstokes
-               SOURCES ../main.cc
-               COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
-               CMD_ARGS parameters/navierstokes )
+dune_add_test_case( NAME navierstokes
+                    SOURCES ../main.cc
+                    COMPILE_DEFINITIONS "POLORDER=${POLORDER}" )
 
 add_code_generate_targets( navierstokes )
 
 if( NOT FEMDG_FAST_TESTBUILD )
-  configure_parameter_file( navierstokesall )
-  dune_add_test( NAME navierstokesall 
-                 SOURCES ../main.cc 
-                 CMD_ARGS parameters/navierstokesall )
+  dune_add_test_case( NAME navierstokesall 
+                      SOURCES ../main.cc )
 
   add_code_generate_targets( navierstokesall )
 endif()
diff --git a/dune/fem-dg/examples/poisson/test/CMakeLists.txt b/dune/fem-dg/examples/poisson/test/CMakeLists.txt
index 352e9350..628f4557 100644
--- a/dune/fem-dg/examples/poisson/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/poisson/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/poisson/")
 
-configure_parameter_file()
-
 # specify type of grid implemention, dimension and polynmomial order
 set( GRIDTYPE ALUGRID_CUBE )
 set( GRIDDIM 2 )
@@ -12,18 +10,14 @@ add_definitions( "-DGRIDDIM=${GRIDDIM}" )
 add_definitions( "-DDIMRANGE=1" )
 add_definitions( "-DPADAPTSPACE" )
 
-configure_parameter_file( poisson )
-dune_add_test( NAME poisson 
-               SOURCES ../main.cc 
-               COMPILE_DEFINITIONS "POLORDER=${POLORDER}" 
-               CMD_ARGS parameters/poisson )
+dune_add_test_case( NAME poisson 
+                    SOURCES ../main.cc 
+                    COMPILE_DEFINITIONS "POLORDER=${POLORDER}" ) 
 add_code_generate_targets( poisson )
 
 if( NOT FEMDG_FAST_TESTBUILD )
-  configure_parameter_file( poissonall )
-  dune_add_test( NAME poissonall 
-                 SOURCES ../main.cc
-                 CMD_ARGS parameters/poissonall )
+  dune_add_test_case( NAME poissonall 
+                      SOURCES ../main.cc )
   
   add_code_generate_targets( poissonall )
 endif()
diff --git a/dune/fem-dg/examples/stokes/test/CMakeLists.txt b/dune/fem-dg/examples/stokes/test/CMakeLists.txt
index 83041b24..5f7a3b52 100644
--- a/dune/fem-dg/examples/stokes/test/CMakeLists.txt
+++ b/dune/fem-dg/examples/stokes/test/CMakeLists.txt
@@ -1,7 +1,5 @@
 include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/stokes/")
 
-configure_parameter_file()
-
 # specify type of grid implemention, dimension and polynmomial order
 set( GRIDTYPE ALUGRID_CUBE )
 set( GRIDDIM 2 )
@@ -10,18 +8,14 @@ set( POLORDER 2 )
 add_definitions( "-D${GRIDTYPE}" )
 add_definitions( "-DGRIDDIM=${GRIDDIM}" )
 
-configure_parameter_file( stokes )
-dune_add_test( NAME stokes
-               SOURCES ../main.cc
-               COMPILE_DEFINITIONS "POLORDER=${POLORDER}" 
-               CMD_ARGS parameters/stokes)
+dune_add_test_case( NAME stokes
+                    SOURCES ../main.cc
+                    COMPILE_DEFINITIONS "POLORDER=${POLORDER}" ) 
 add_code_generate_targets( stokes )
 
 if( NOT FEMDG_FAST_TESTBUILD )
-  configure_parameter_file( stokesall )
-  dune_add_test( NAME stokesall 
-                 SOURCES ../main.cc 
-                 CMD_ARGS parameters/stokesall )
+  dune_add_test_case( NAME stokesall 
+                      SOURCES ../main.cc ) 
   add_code_generate_targets( stokesall )
 endif()
 
-- 
GitLab