summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcastro-ma <castroma@clarkson.edu>2024-04-20 17:52:35 (GMT)
committerMario Castro <castroma@clarkson.edu>2024-04-24 20:45:29 (GMT)
commitc97121270382c37f6bb062755149fd5e323fb20f (patch)
treeb6e4ae41c5c5ee84ea15bbd53e42b8022b410d49
parent7dac16498e070eac26073e9940b067d33a5f9256 (diff)
downloadCMake-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.cxx4
-rw-r--r--Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake13
-rw-r--r--Tests/RunCMake/CTestCommandLine/testDir-presets.json.in20
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"
+ }
+ ]
+}