diff --git a/Modules/CTestUseLaunchers.cmake b/Modules/CTestUseLaunchers.cmake index 5c544f8cd9..eeea992734 100644 --- a/Modules/CTestUseLaunchers.cmake +++ b/Modules/CTestUseLaunchers.cmake @@ -46,7 +46,7 @@ endif() if(CTEST_USE_LAUNCHERS) set(__launch_common_options - "--target-name --build-dir ") + "--target-name --current-build-dir ") set(__launch_compile_options "${__launch_common_options} --output --source --language ") diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 2e3b7f61c6..d051d68650 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -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 "); } else { launcher = cmStrCat("\"", cmSystemTools::GetCTestCommand(), "\" --instrument "); } std::string common_args = - cmStrCat(" --target-name --current-build-dir ", - " --build-dir \"", + cmStrCat(" --target-name --build-dir \"", this->State->GetBinaryDirectory(), "\" "); this->State->SetGlobalProperty( "RULE_LAUNCH_COMPILE", diff --git a/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-result.txt b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-result.txt new file mode 100644 index 0000000000..b57e2deb77 --- /dev/null +++ b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stderr.txt b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stderr.txt new file mode 100644 index 0000000000..e9327a3c6e --- /dev/null +++ b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stderr.txt @@ -0,0 +1,2 @@ +Unable to find executable:.*MyThirdPartyDependency/src(/[^/ +]+)?/third_party diff --git a/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stdout.txt b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stdout.txt new file mode 100644 index 0000000000..c2c1bc7a0a --- /dev/null +++ b/Tests/RunCMake/ctest_labels_for_subprojects/CTestScriptVariableCommandLineWithInstrumentation-stdout.txt @@ -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 diff --git a/Tests/RunCMake/ctest_labels_for_subprojects/RunCMakeTest.cmake b/Tests/RunCMake/ctest_labels_for_subprojects/RunCMakeTest.cmake index 7ed87eaf48..9b3b6f4927 100644 --- a/Tests/RunCMake/ctest_labels_for_subprojects/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_labels_for_subprojects/RunCMakeTest.cmake @@ -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}) ]]) - 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) - ]]) - - run_ctest(CTestScriptVariableCommandLine "-DCTEST_LABELS_FOR_SUBPROJECTS:STRING=MyThirdPartyDependency") + 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) + ]]) + 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)