Skip to content

Commit 7373881

Browse files
committed
Update the command set in BOUT++functions.cmake to make ctest use pytest for integrated tests
(rather than running ``./runtest`) * The specific python test filename (e.g., `test_foo.py`) is generated in `bout_add_integrated_test`. * then passed to `bout_add_integrated_or_mms_test` via a new `PYTHON_TEST_FILE` argument. * Modified `add_test()` to execute `pytest <filename>` for integrated tests (preserves the `./runtest` fallback for MMS tests).
1 parent 7aef97a commit 7373881

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

cmake/BOUT++functions.cmake

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ endfunction()
172172
#
173173
function(bout_add_integrated_or_mms_test BUILD_CHECK_TARGET TESTNAME)
174174
set(options USE_RUNTEST USE_DATA_BOUT_INP)
175-
set(oneValueArgs EXECUTABLE_NAME PROCESSORS DOWNLOAD DOWNLOAD_NAME)
175+
set(oneValueArgs EXECUTABLE_NAME PROCESSORS DOWNLOAD DOWNLOAD_NAME PYTHON_TEST_FILE)
176176
set(multiValueArgs SOURCES EXTRA_FILES REQUIRES CONFLICTS TESTARGS
177177
EXTRA_DEPENDS
178178
)
@@ -252,9 +252,16 @@ function(bout_add_integrated_or_mms_test BUILD_CHECK_TARGET TESTNAME)
252252
set(BOUT_TEST_OPTIONS_PROCESSORS 1)
253253
endif()
254254

255-
# Set the actual test command
255+
# Set the actual test command
256256
if(BOUT_TEST_OPTIONS_USE_RUNTEST)
257-
add_test(NAME ${TESTNAME} COMMAND ./runtest ${BOUT_TEST_OPTIONS_TESTARGS})
257+
if(BOUT_TEST_OPTIONS_PYTHON_TEST_FILE)
258+
# It's an integrated test with a specific python file
259+
add_test(NAME ${TESTNAME} COMMAND pytest ${BOUT_TEST_OPTIONS_PYTHON_TEST_FILE} ${BOUT_TEST_OPTIONS_TESTARGS})
260+
else()
261+
# It's an MMS test still using the 'runtest' script
262+
add_test(NAME ${TESTNAME} COMMAND ./runtest ${BOUT_TEST_OPTIONS_TESTARGS})
263+
endif()
264+
258265
set_tests_properties(
259266
${TESTNAME} PROPERTIES ENVIRONMENT
260267
PYTHONPATH=${BOUT_PYTHONPATH}:$ENV{PYTHONPATH}
@@ -287,17 +294,20 @@ endfunction()
287294

288295
# Add a new integrated test. See `bout_add_integrated_or_mms_test` for arguments
289296
function(bout_add_integrated_test TESTNAME)
297+
# Construct the Python test filename
298+
string(REGEX REPLACE "^(test-)?(.+)$" "test_\\2.py" TEST_FILENAME "${TESTNAME}")
299+
string(REPLACE "-" "_" TEST_FILENAME "${TEST_FILENAME}")
300+
string(REPLACE "test_test_" "test_" TEST_FILENAME "${TEST_FILENAME}")
301+
290302
bout_add_integrated_or_mms_test(
291-
build-check-integrated-tests ${TESTNAME} ${ARGV}
303+
build-check-integrated-tests ${TESTNAME} PYTHON_TEST_FILE ${TEST_FILENAME} ${ARGV}
292304
)
293-
if(TARGET ${TESTNAME}) # Don't copy if the test has been skipped
294-
string(REGEX REPLACE "^(test-)?(.+)$" "test_\\2.py" TEST_FILENAME "${TESTNAME}")
295-
string(REPLACE "-" "_" TEST_FILENAME "${TEST_FILENAME}")
296-
string(REPLACE "test_test_" "test_" TEST_FILENAME "${TEST_FILENAME}")
305+
306+
# 3. Only copy the file if the test wasn't skipped due to missing requirements
307+
if(TARGET ${TESTNAME})
297308
bout_copy_file(${TEST_FILENAME})
298309
endif()
299310
endfunction()
300-
301311
# Add a new MMS test. See `bout_add_integrated_or_mms_test` for arguments
302312
function(bout_add_mms_test TESTNAME)
303313
bout_add_integrated_or_mms_test(build-check-mms-tests ${TESTNAME} ${ARGV})

0 commit comments

Comments
 (0)