diff options
author | castro-ma <castroma@clarkson.edu> | 2024-04-20 17:52:35 (GMT) |
---|---|---|
committer | Mario Castro <castroma@clarkson.edu> | 2024-04-24 20:45:29 (GMT) |
commit | c97121270382c37f6bb062755149fd5e323fb20f (patch) | |
tree | b6e4ae41c5c5ee84ea15bbd53e42b8022b410d49 | |
parent | 7dac16498e070eac26073e9940b067d33a5f9256 (diff) | |
download | CMake-c97121270382c37f6bb062755149fd5e323fb20f.zip CMake-c97121270382c37f6bb062755149fd5e323fb20f.tar.gz CMake-c97121270382c37f6bb062755149fd5e323fb20f.tar.bz2 |
ctest: Allow --test-dir override when using presets
Fixes: #23982
-rw-r--r-- | Source/cmCTest.cxx | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 13 | ||||
-rw-r--r-- | Tests/RunCMake/CTestCommandLine/testDir-presets.json.in | 20 |
3 files changed, 33 insertions, 4 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 498fd6e..e1aefd9 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -760,7 +760,9 @@ bool cmCTest::UpdateCTestConfiguration() } if (!this->GetCTestConfiguration("BuildDirectory").empty()) { this->Impl->BinaryDir = this->GetCTestConfiguration("BuildDirectory"); - cmSystemTools::ChangeDirectory(this->Impl->BinaryDir); + if (this->Impl->TestDir.empty()) { + cmSystemTools::ChangeDirectory(this->Impl->BinaryDir); + } } this->Impl->TimeOut = std::chrono::seconds(atoi(this->GetCTestConfiguration("TimeOut").c_str())); diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index 3ce2a08..190c6c1 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -542,7 +542,7 @@ run_MemCheckSan(UndefinedBehavior "simulate_sanitizer=1") run_cmake_command(test-dir-invalid-arg ${CMAKE_CTEST_COMMAND} --test-dir) run_cmake_command(test-dir-non-existing-dir ${CMAKE_CTEST_COMMAND} --test-dir non-existing-dir) -function(run_testDir) +function(run_testDir testName testPreset) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/testDir) set(RunCMake_TEST_NO_CLEAN 1) file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") @@ -552,9 +552,16 @@ function(run_testDir) add_test(Test1 \"${CMAKE_COMMAND}\" -E true) add_test(Test2 \"${CMAKE_COMMAND}\" -E true) ") - run_cmake_command(testDir ${CMAKE_CTEST_COMMAND} --test-dir "${RunCMake_TEST_BINARY_DIR}/sub") + if (testPreset) + set(presetCommandLine --preset=default) + configure_file( + ${RunCMake_SOURCE_DIR}/testDir-presets.json.in + ${RunCMake_TEST_BINARY_DIR}/CMakePresets.json) + endif() + run_cmake_command(${testName} ${CMAKE_CTEST_COMMAND} --test-dir "${RunCMake_TEST_BINARY_DIR}/sub" ${presetCommandLine}) endfunction() -run_testDir() +run_testDir(testDir 0) +run_testDir(testDir-preset 1) # Test --output-junit function(run_output_junit) diff --git a/Tests/RunCMake/CTestCommandLine/testDir-presets.json.in b/Tests/RunCMake/CTestCommandLine/testDir-presets.json.in new file mode 100644 index 0000000..46391f8 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/testDir-presets.json.in @@ -0,0 +1,20 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 22, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "binaryDir": "presetBinaryDir" + } + ], + "testPresets": [ + { + "name": "default", + "configurePreset": "default" + } + ] +} |