Update the CMake build system to conditionally exclude tests that

return MFEM_SKIP_RETURN_VALUE under certain config conditions. These
exclusions will need to be updated manually when a test is modified
to return or no longer return MFEM_SKIP_RETURN_VALUE.

Added some tests missing from the CMake tests compared to the
GNU make tests.
This commit is contained in:
Veselin Dobrev
2024-03-23 16:15:46 -07:00
parent 8c98ecbf91
commit 91204ea52e
8 changed files with 149 additions and 68 deletions
+12
View File
@@ -93,6 +93,15 @@ if (MFEM_USE_MPI)
)
endif()
# Examples that return MFEM_SKIP_RETURN_VALUE in some cases:
set(SKIP_TESTS)
if (HYPRE_USING_CUDA OR HYPRE_USING_HIP)
list(APPEND SKIP_TESTS ex19p.cpp ex28p.cpp)
endif()
if (MFEM_USE_SINGLE)
list(APPEND SKIP_TESTS ex33.cpp ex33p.cpp)
endif()
# Include the source directory where mfem.hpp and mfem-performance.hpp are.
include_directories(BEFORE ${PROJECT_BINARY_DIR})
@@ -102,6 +111,9 @@ add_mfem_examples(ALL_EXE_SRCS)
# Add a test for each example
if (MFEM_ENABLE_TESTING)
foreach(SRC_FILE ${ALL_EXE_SRCS})
if (SRC_FILE IN_LIST SKIP_TESTS)
continue()
endif()
get_filename_component(SRC_FILENAME ${SRC_FILE} NAME)
string(REPLACE ".cpp" "" TEST_NAME ${SRC_FILENAME})
+8 -6
View File
@@ -55,11 +55,13 @@ if (MFEM_USE_MPI)
-no-vis -p rod -tf 3 -m ${CMAKE_CURRENT_SOURCE_DIR}/cylinder-hex.mesh
${MPIEXEC_POSTFLAGS})
add_test(NAME maxwell_np=4
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:maxwell>
-no-vis -abcs "-1" -dp "-0.3 0.0 0.0 0.3 0.0 0.0 0.1 1 .5 .5"
${MPIEXEC_POSTFLAGS})
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME maxwell_np=4
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:maxwell>
-no-vis -abcs "-1" -dp "-0.3 0.0 0.0 0.3 0.0 0.0 0.1 1 .5 .5"
${MPIEXEC_POSTFLAGS})
endif()
endif()
endif()
+36 -13
View File
@@ -91,10 +91,22 @@ add_mfem_miniapp(polar-nc
# Add serial tests.
if (MFEM_ENABLE_TESTING)
add_test(NAME mesh-optimizer
COMMAND mesh-optimizer -no-vis -m ${CMAKE_CURRENT_SOURCE_DIR}/icf.mesh)
add_test(NAME minimal-surface COMMAND minimal-surface -no-vis)
set(SERIAL_TESTS
mobius-strip
klein-bottle
toroid
trimmer
twist
extruder
mesh-optimizer
minimal-surface
polar-nc
reflector
mesh-quality
)
foreach(test ${SERIAL_TESTS})
add_test(NAME ${test} COMMAND ${test} -no-vis)
endforeach()
endif()
# Parallel apps.
@@ -123,15 +135,26 @@ if (MFEM_USE_MPI)
# Add parallel tests.
if (MFEM_ENABLE_TESTING)
add_test(NAME pmesh-optimizer_np=${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:pmesh-optimizer> -no-vis
-m ${CMAKE_CURRENT_SOURCE_DIR}/icf.mesh
${MPIEXEC_POSTFLAGS})
set(PARALLEL_TESTS
pmesh-optimizer
pmesh-fitting
fit-node-position
pminimal-surface
)
# Meshing miniapps that return MFEM_SKIP_RETURN_VALUE in some cases:
set(SKIP_TESTS)
if (HYPRE_USING_CUDA OR HYPRE_USING_HIP)
list(APPEND SKIP_TESTS pmesh-fitting)
endif()
add_test(NAME pminimal-surface_np=${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:pminimal-surface> -no-vis
${MPIEXEC_POSTFLAGS})
foreach(test ${PARALLEL_TESTS})
if (test IN_LIST SKIP_TESTS)
continue()
endif()
add_test(NAME ${test}_np=${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:${test}> -no-vis
${MPIEXEC_POSTFLAGS})
endforeach()
endif()
endif()
+23 -12
View File
@@ -14,13 +14,13 @@ if (MFEM_USE_MPI)
sbm_solver.cpp
marking.cpp
extrapolator.cpp
integ_algoim.cpp)
integ_algoim.cpp)
list(APPEND DIST_COMMON_HEADERS
sbm_solver.hpp
sbm_aux.hpp
marking.hpp
extrapolator.hpp
integ_algoim.hpp)
integ_algoim.hpp)
convert_filenames_to_full_paths(DIST_COMMON_SOURCES)
convert_filenames_to_full_paths(DIST_COMMON_HEADERS)
@@ -50,16 +50,27 @@ if (MFEM_USE_MPI)
LIBRARIES mfem mfem-common)
if (MFEM_ENABLE_TESTING)
add_test(NAME shifted_distance_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:distance> -no-vis
${MPIEXEC_POSTFLAGS})
set(PARALLEL_TESTS
distance
diffusion
extrapolate
lsf_integral
)
# Shifted miniapps that return MFEM_SKIP_RETURN_VALUE in some cases:
set(SKIP_TESTS)
if (HYPRE_USING_CUDA OR HYPRE_USING_HIP)
list(APPEND SKIP_TESTS diffusion)
endif()
add_test(NAME shifted_diffusion_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:diffusion> -no-vis
${MPIEXEC_POSTFLAGS})
foreach(test ${PARALLEL_TESTS})
if (test IN_LIST SKIP_TESTS)
continue()
endif()
add_test(NAME shifted_${test}_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:${test}> -no-vis
${MPIEXEC_POSTFLAGS})
endforeach()
endif()
endif ()
+17 -14
View File
@@ -29,21 +29,24 @@ if (MFEM_USE_MPI)
# Add the corresponding tests to the "test" target
if (MFEM_ENABLE_TESTING)
add_test(NAME block-solvers-constant_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:block-solvers> -rs 1 -rp 1 -no-vis
${MPIEXEC_POSTFLAGS})
if (NOT (HYPRE_USING_CUDA OR HYPRE_USING_HIP))
# otherwise block-solvers returns MFEM_SKIP_RETURN_VALUE
add_test(NAME block-solvers-constant_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:block-solvers> -rs 1 -rp 1 -no-vis
${MPIEXEC_POSTFLAGS})
add_test(NAME block-solvers-anisotropic_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:block-solvers> -rs 1 -rp 1
-m ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.mesh
-c ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.coeff
-eb ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.brd
-no-vis
${MPIEXEC_POSTFLAGS})
add_test(NAME block-solvers-anisotropic_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:block-solvers> -rs 1 -rp 1
-m ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.mesh
-c ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.coeff
-eb ${CMAKE_CURRENT_SOURCE_DIR}/anisotropic.brd
-no-vis
${MPIEXEC_POSTFLAGS})
endif()
add_test(NAME plor_solvers_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
+13 -3
View File
@@ -19,7 +19,17 @@ if (MFEM_USE_MPI)
# Copy files to the build folder.
file(COPY ${PROJECT_SOURCE_DIR}/miniapps/spde/README.md
DESTINATION ${PROJECT_BINARY_DIR}/miniapps/spde)
else ()
message("This miniapp requires MPI to be enabled."
"Please compile with MFEM_USE_MPI.")
if (MFEM_ENABLE_TESTING)
if (MFEM_USE_DOUBLE)
# otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME generate_random_field_np${MFEM_MPI_NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MFEM_MPI_NP}
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:generate_random_field> -no-vis
-r 3 -rp 2 -nu 4 -l1 0.09 -l2 0.03 -l3 0.05 -s 0.01 -t 0.08 -top 1
-no-rs -m ../../data/ref-square.mesh
${MPIEXEC_POSTFLAGS})
endif()
endif()
endif()
+4 -2
View File
@@ -25,7 +25,8 @@ include $(DEFAULTS_MK)
MFEM_LIB_FILE = mfem_is_not_built
-include $(CONFIG_MK)
SPDE_COMMON_SRC = material_metrics.cpp spde_solver.cpp transformation.cpp util.cpp visualizer.cpp
SPDE_COMMON_SRC = material_metrics.cpp spde_solver.cpp transformation.cpp\
util.cpp visualizer.cpp
SPDE_COMMON_OBJ = $(SPDE_COMMON_SRC:.cpp=.o)
@@ -60,7 +61,8 @@ include $(MFEM_TEST_MK)
RUN_MPI = $(MFEM_MPIEXEC) $(MFEM_MPIEXEC_NP) $(MFEM_MPI_NP)
generate_random_field-test-par: generate_random_field
@$(call mfem-test,$<,$(RUN_MPI), random field miniapp,-r 3 -rp 2 \
-nu 4 -l1 0.09 -l2 0.03 -l3 0.05 -s 0.01 -t 0.08 -top 1 -no-rs -m ../../data/ref-square.mesh)
-nu 4 -l1 0.09 -l2 0.03 -l3 0.05 -s 0.01 -t 0.08 -top 1 -no-rs \
-m ../../data/ref-square.mesh)
# Generate an error message if the MFEM library is not built and exit
$(MFEM_LIB_FILE):
+36 -18
View File
@@ -155,7 +155,9 @@ COMMAND ${CMAKE_COMMAND} -E copy_directory
# The unit tests can be built and run separately from the rest of the tests:
# make unit_tests
# ctest -R unit_tests [-V]
add_test(NAME unit_tests COMMAND unit_tests)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME unit_tests COMMAND unit_tests)
endif()
#-----------------------------------------------------------
# SERIAL CUDA TESTS: cunit_tests
@@ -168,7 +170,9 @@ if (MFEM_USE_CUDA)
target_link_libraries(cunit_tests mfem)
add_dependencies(cunit_tests copy_data)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} cunit_tests)
add_test(NAME cunit_tests COMMAND cunit_tests)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME cunit_tests COMMAND cunit_tests)
endif()
endif()
#-----------------------------------------------------------
@@ -194,20 +198,26 @@ function(add_serial_miniapp_test name test_uvm)
target_compile_definitions(${name}_tests_cpu PUBLIC MFEM_${NAME}_DEVICE="cpu")
target_link_libraries(${name}_tests_cpu mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} ${name}_tests_cpu)
add_test(NAME ${name}_tests_cpu COMMAND ${name}_tests_cpu)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME ${name}_tests_cpu COMMAND ${name}_tests_cpu)
endif()
mfem_add_executable(${name}_tests_debug ${${NAME}_TESTS_SRCS})
target_compile_definitions(${name}_tests_debug PUBLIC MFEM_${NAME}_DEVICE="debug")
target_link_libraries(${name}_tests_debug mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} ${name}_tests_debug)
add_test(NAME ${name}_tests_debug COMMAND ${name}_tests_debug)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME ${name}_tests_debug COMMAND ${name}_tests_debug)
endif()
if (MFEM_USE_CUDA)
mfem_add_executable(${name}_tests_cuda ${${NAME}_TESTS_SRCS})
target_compile_definitions(${name}_tests_cuda PUBLIC MFEM_${NAME}_DEVICE="cuda")
target_link_libraries(${name}_tests_cuda mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} ${name}_tests_cuda)
add_test(NAME ${name}_tests_cuda COMMAND ${name}_tests_cuda)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME ${name}_tests_cuda COMMAND ${name}_tests_cuda)
endif()
if (test_uvm)
mfem_add_executable(${name}_tests_cuda_uvm ${${NAME}_TESTS_SRCS})
@@ -216,7 +226,9 @@ function(add_serial_miniapp_test name test_uvm)
target_link_libraries(${name}_tests_cuda_uvm mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME}
${name}_tests_cuda_uvm)
add_test(NAME ${name}_tests_cuda_uvm COMMAND ${name}_tests_cuda_uvm)
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME ${name}_tests_cuda_uvm COMMAND ${name}_tests_cuda_uvm)
endif()
endif()
endif(MFEM_USE_CUDA)
endfunction(add_serial_miniapp_test)
@@ -268,10 +280,12 @@ if (MFEM_USE_MPI)
target_link_libraries(punit_tests mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} punit_tests)
foreach(np 1 ${MFEM_MPI_NP})
add_test(NAME punit_tests_np=${np}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${np}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:punit_tests>
${MPIEXEC_POSTFLAGS})
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME punit_tests_np=${np}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${np}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:punit_tests>
${MPIEXEC_POSTFLAGS})
endif()
endforeach()
if (MFEM_USE_CUDA)
set(PCUNIT_TESTS_SRCS pcunit_test_main.cpp)
@@ -281,10 +295,12 @@ if (MFEM_USE_MPI)
target_link_libraries(pcunit_tests mfem)
add_dependencies(${MFEM_ALL_TESTS_TARGET_NAME} pcunit_tests)
foreach(np 1 ${MFEM_MPI_NP})
add_test(NAME pcunit_tests_np=${np}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${np}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:pcunit_tests>
${MPIEXEC_POSTFLAGS})
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME pcunit_tests_np=${np}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${np}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:pcunit_tests>
${MPIEXEC_POSTFLAGS})
endif()
endforeach()
endif()
endif(MFEM_USE_MPI)
@@ -311,10 +327,12 @@ function(add_parallel_miniapp_test name HYPRE_MM)
function(add_mpi_unit_test DEV NP)
set(test_name p${name}_tests_${DEV})
add_test(NAME ${test_name}_np=${NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NP}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:${test_name}>
${MPIEXEC_POSTFLAGS})
if (MFEM_USE_DOUBLE) # otherwise returns MFEM_SKIP_RETURN_VALUE
add_test(NAME ${test_name}_np=${NP}
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NP}
${MPIEXEC_PREFLAGS} $<TARGET_FILE:${test_name}>
${MPIEXEC_POSTFLAGS})
endif()
endfunction()
set(PAR_${NAME}_TESTS_SRCS punit_test_main.cpp miniapps/test_${name}.cpp)