ctest: Allow --test-dir override when using presets

Fixes: #23982
This commit is contained in:
castro-ma
2024-04-20 13:52:35 -04:00
committed by Mario Castro
parent 7dac16498e
commit c971212703
3 changed files with 33 additions and 4 deletions

View File

@@ -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()));

View File

@@ -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)

View File

@@ -0,0 +1,20 @@
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 22,
"patch": 0
},
"configurePresets": [
{
"name": "default",
"binaryDir": "presetBinaryDir"
}
],
"testPresets": [
{
"name": "default",
"configurePreset": "default"
}
]
}