instrumentation: Fix expected location of Labels when using CTest launchers

This commit is contained in:
Martin Duffy 2025-01-30 14:02:43 -05:00
parent d2a3d596d6
commit 1595713596
6 changed files with 36 additions and 13 deletions

View File

@ -46,7 +46,7 @@ endif()
if(CTEST_USE_LAUNCHERS)
set(__launch_common_options
"--target-name <TARGET_NAME> --build-dir <CMAKE_CURRENT_BINARY_DIR>")
"--target-name <TARGET_NAME> --current-build-dir <CMAKE_CURRENT_BINARY_DIR>")
set(__launch_compile_options
"${__launch_common_options} --output <OBJECT> --source <SOURCE> --language <LANGUAGE>")

View File

@ -2661,14 +2661,14 @@ int cmake::ActualConfigure()
std::string launcher;
if (mf->IsOn("CTEST_USE_LAUNCHERS")) {
launcher =
cmStrCat("\"", cmSystemTools::GetCTestCommand(), "\" --launch ");
cmStrCat("\"", cmSystemTools::GetCTestCommand(), "\" --launch ",
"--current-build-dir <CMAKE_CURRENT_BINARY_DIR> ");
} else {
launcher =
cmStrCat("\"", cmSystemTools::GetCTestCommand(), "\" --instrument ");
}
std::string common_args =
cmStrCat(" --target-name <TARGET_NAME> --current-build-dir ",
"<CMAKE_CURRENT_BINARY_DIR> --build-dir \"",
cmStrCat(" --target-name <TARGET_NAME> --build-dir \"",
this->State->GetBinaryDirectory(), "\" ");
this->State->SetGlobalProperty(
"RULE_LAUNCH_COMPILE",

View File

@ -0,0 +1,2 @@
Unable to find executable:.*MyThirdPartyDependency/src(/[^/
]+)?/third_party

View File

@ -0,0 +1,9 @@
0% tests passed, 1 tests failed out of 1
+
Subproject Time Summary:
MyThirdPartyDependency += +[0-9.]+ sec\*proc \(1 test\)
+
Label Time Summary:
NotASubproject += +[0-9.]+ sec\*proc \(1 test\)
+
Total Test time \(real\) = +[0-9.]+ sec

View File

@ -29,25 +29,36 @@ run_CTestScriptVariable()
# ctest -S test.cmake -DCTEST_LABELS_FOR_SUBPROJECTS:STRING="MySubproject"
# Note: This test includes a failing build
# Note: Also use --instrumentation mode to ensure it doesn't interfere with label generation
function(run_CTestScriptVariableCommandLine)
function(run_CTestScriptVariableCommandLine USE_INSTRUMENTATION)
set(CTEST_EXTRA_CONFIG "set(CTEST_USE_LAUNCHERS 1)")
set(CASE_TEST_PREFIX_CODE [[
file(COPY "${CTEST_RUNCMAKE_SOURCE_DIRECTORY}/MyThirdPartyDependency"
DESTINATION ${CTEST_SOURCE_DIRECTORY})
]])
if(USE_INSTRUMENTATION)
set(CASE_CMAKELISTS_SUFFIX_CODE [[
add_subdirectory(MyThirdPartyDependency)
set(CMAKE_EXPERIMENTAL_INSTRUMENTATION "a37d1069-1972-4901-b9c9-f194aaf2b6e0")
cmake_instrumentation(DATA_VERSION 1 API_VERSION 1)
add_subdirectory(MyThirdPartyDependency)
set(CMAKE_EXPERIMENTAL_INSTRUMENTATION "a37d1069-1972-4901-b9c9-f194aaf2b6e0")
cmake_instrumentation(DATA_VERSION 1 API_VERSION 1)
]])
run_ctest(CTestScriptVariableCommandLine "-DCTEST_LABELS_FOR_SUBPROJECTS:STRING=MyThirdPartyDependency")
set(RunCMake-check-file CTestScriptVariableCommandLine-check.cmake)
run_ctest(CTestScriptVariableCommandLineWithInstrumentation
"-DCTEST_LABELS_FOR_SUBPROJECTS:STRING=MyThirdPartyDependency")
unset(RunCMake-check-file)
else()
set(CASE_CMAKELISTS_SUFFIX_CODE [[
add_subdirectory(MyThirdPartyDependency)
]])
run_ctest(CTestScriptVariableCommandLine
"-DCTEST_LABELS_FOR_SUBPROJECTS:STRING=MyThirdPartyDependency")
endif()
unset(CTEST_EXTRA_CONFIG)
unset(CASE_TEST_PREFIX_CODE)
unset(CASE_CMAKELISTS_SUFFIX_CODE)
endfunction()
run_CTestScriptVariableCommandLine()
run_CTestScriptVariableCommandLine(ON)
run_CTestScriptVariableCommandLine(OFF)
# 3. Set subprojects via a CTest module variable on the command line
# (will populate DartConfiguration.tcl)