/
OgsTest.cmake
59 lines (51 loc) · 2.11 KB
/
OgsTest.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function (OgsTest)
if(NOT OGS_BUILD_TESTS)
return()
endif()
set(options LARGE)
set(oneValueArgs PROJECTFILE RUNTIME)
set(multiValueArgs WRAPPER)
cmake_parse_arguments(OgsTest "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
get_filename_component(OgsTest_DIR "${OgsTest_PROJECTFILE}" DIRECTORY)
get_filename_component(OgsTest_NAME "${OgsTest_PROJECTFILE}" NAME)
get_filename_component(OgsTest_NAME_WE "${OgsTest_PROJECTFILE}" NAME_WE)
if (OgsTest_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unparsed argument(s) '${OgsTest_UNPARSED_ARGUMENTS}' to OgsTest call.")
endif()
if (NOT DEFINED OgsTest_RUNTIME)
set(OgsTest_RUNTIME 1)
endif()
set(OgsTest_SOURCE_DIR "${Data_SOURCE_DIR}/${OgsTest_DIR}")
set(OgsTest_BINARY_DIR "${Data_BINARY_DIR}/${OgsTest_DIR}")
file(MAKE_DIRECTORY ${OgsTest_BINARY_DIR})
file(TO_NATIVE_PATH "${OgsTest_BINARY_DIR}" OgsTest_BINARY_DIR_NATIVE)
set(TEST_NAME "ogs-${OgsTest_DIR}/${OgsTest_NAME_WE}")
# Add wrapper postfix (-mpi for mpirun).
if (OgsTest_WRAPPER)
string(REGEX MATCH "^[^ ]+" WRAPPER ${OgsTest_WRAPPER})
if (WRAPPER STREQUAL "mpirun")
set(TEST_NAME "${TEST_NAME}-mpi")
endif()
endif()
# Add -LARGE tag.
if (${OgsTest_LARGE})
set(TEST_NAME "${TEST_NAME}-LARGE")
endif()
add_test(
NAME ${TEST_NAME}
WORKING_DIRECTORY "${OgsTest_BINARY_DIR}"
COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME})
# For debugging:
#message("Adding test with
# NAME ${TEST_NAME}
# WORKING_DIRECTORY ${OgsTest_BINARY_DIR}
# COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME})
set_tests_properties(${TEST_NAME} PROPERTIES
ENVIRONMENT VTKDIFF_EXE=$<TARGET_FILE:vtkdiff>
COST ${OgsTest_RUNTIME})
if(TARGET ${OgsTest_EXECUTABLE})
add_dependencies(ctest ${OgsTest_EXECUTABLE})
add_dependencies(ctest-large ${OgsTest_EXECUTABLE})
endif()
endfunction()