mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
Merge topic 'ctest_start_function_scope'
13347740Help: add release notes, documentation for CTEST_RUN_CURRENT_SCRIPT behavior74092d92cmCTestScriptHandler: Add new field ShouldRunCurrentScript Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1703
This commit is contained in:
@@ -513,6 +513,7 @@ Variables for CTest
|
||||
/variable/CTEST_P4_COMMAND
|
||||
/variable/CTEST_P4_OPTIONS
|
||||
/variable/CTEST_P4_UPDATE_OPTIONS
|
||||
/variable/CTEST_RUN_CURRENT_SCRIPT
|
||||
/variable/CTEST_SCP_COMMAND
|
||||
/variable/CTEST_SITE
|
||||
/variable/CTEST_SOURCE_DIRECTORY
|
||||
|
||||
8
Help/release/dev/ctest_start_function_scope.rst
Normal file
8
Help/release/dev/ctest_start_function_scope.rst
Normal file
@@ -0,0 +1,8 @@
|
||||
ctest_start_function_scope
|
||||
--------------------------
|
||||
|
||||
* The :command:`ctest_start` command no longer sets
|
||||
:variable:`CTEST_RUN_CURRENT_SCRIPT` due to issues with scoping if it is
|
||||
called from inside a function. Instead, it sets an internal variable in
|
||||
CTest. However, setting :variable:`CTEST_RUN_CURRENT_SCRIPT` to 0 at the
|
||||
global scope still prevents the script from being re-run at the end.
|
||||
5
Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
Normal file
5
Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
CTEST_RUN_CURRENT_SCRIPT
|
||||
------------------------
|
||||
|
||||
Setting this to 0 prevents :manual:`ctest(1)` from being run again when it
|
||||
reaches the end of a script run by calling ``ctest -S``.
|
||||
@@ -346,6 +346,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
||||
this->Makefile->AddDefinition("CMAKE_EXECUTABLE_NAME",
|
||||
cmSystemTools::GetCMakeCommand().c_str());
|
||||
this->Makefile->AddDefinition("CTEST_RUN_CURRENT_SCRIPT", true);
|
||||
this->SetRunCurrentScript(true);
|
||||
this->UpdateElapsedTime();
|
||||
|
||||
// add the script arg if defined
|
||||
@@ -527,7 +528,8 @@ int cmCTestScriptHandler::RunConfigurationScript(
|
||||
}
|
||||
|
||||
// only run the curent script if we should
|
||||
if (this->Makefile && this->Makefile->IsOn("CTEST_RUN_CURRENT_SCRIPT")) {
|
||||
if (this->Makefile && this->Makefile->IsOn("CTEST_RUN_CURRENT_SCRIPT") &&
|
||||
this->ShouldRunCurrentScript) {
|
||||
return this->RunCurrentScript();
|
||||
}
|
||||
return result;
|
||||
@@ -538,7 +540,7 @@ int cmCTestScriptHandler::RunCurrentScript()
|
||||
int result;
|
||||
|
||||
// do not run twice
|
||||
this->Makefile->AddDefinition("CTEST_RUN_CURRENT_SCRIPT", false);
|
||||
this->SetRunCurrentScript(false);
|
||||
|
||||
// no popup widows
|
||||
cmSystemTools::SetRunCommandHideConsole(true);
|
||||
@@ -980,3 +982,8 @@ cmDuration cmCTestScriptHandler::GetRemainingTimeAllowed()
|
||||
std::chrono::steady_clock::now() - this->ScriptStartTime);
|
||||
return (timelimit - duration);
|
||||
}
|
||||
|
||||
void cmCTestScriptHandler::SetRunCurrentScript(bool value)
|
||||
{
|
||||
this->ShouldRunCurrentScript = value;
|
||||
}
|
||||
|
||||
@@ -107,6 +107,8 @@ public:
|
||||
void CreateCMake();
|
||||
cmake* GetCMake() { return this->CMake; }
|
||||
|
||||
void SetRunCurrentScript(bool value);
|
||||
|
||||
private:
|
||||
// reads in a script
|
||||
int ReadInScript(const std::string& total_script_arg);
|
||||
@@ -137,6 +139,8 @@ private:
|
||||
std::vector<std::string> ConfigurationScripts;
|
||||
std::vector<bool> ScriptProcessScope;
|
||||
|
||||
bool ShouldRunCurrentScript;
|
||||
|
||||
bool Backup;
|
||||
bool EmptyBinDir;
|
||||
bool EmptyBinDirOnce;
|
||||
|
||||
@@ -126,7 +126,7 @@ bool cmCTestStartCommand::InitialPass(std::vector<std::string> const& args,
|
||||
return false;
|
||||
}
|
||||
|
||||
this->Makefile->AddDefinition("CTEST_RUN_CURRENT_SCRIPT", "OFF");
|
||||
this->CTest->SetRunCurrentScript(false);
|
||||
this->CTest->SetSuppressUpdatingCTestConfiguration(true);
|
||||
int model = this->CTest->GetTestModelFromString(smodel);
|
||||
this->CTest->SetTestModel(model);
|
||||
|
||||
@@ -2797,6 +2797,14 @@ cmDuration cmCTest::MaxDuration()
|
||||
return cmDuration(1.0e7);
|
||||
}
|
||||
|
||||
void cmCTest::SetRunCurrentScript(bool value)
|
||||
{
|
||||
cmCTestScriptHandler* ch =
|
||||
static_cast<cmCTestScriptHandler*>(this->GetHandler("script"));
|
||||
|
||||
ch->SetRunCurrentScript(value);
|
||||
}
|
||||
|
||||
void cmCTest::OutputTestErrors(std::vector<char> const& process_output)
|
||||
{
|
||||
std::string test_outputs("\n*** Test Failed:\n");
|
||||
|
||||
@@ -458,6 +458,8 @@ public:
|
||||
void GenerateSubprojectsOutput(cmXMLWriter& xml);
|
||||
std::vector<std::string> GetLabelsForSubprojects();
|
||||
|
||||
void SetRunCurrentScript(bool value);
|
||||
|
||||
private:
|
||||
int RepeatTests;
|
||||
bool RepeatUntilFail;
|
||||
|
||||
1
Tests/RunCMake/ctest_start/FunctionScope-stdout.txt
Normal file
1
Tests/RunCMake/ctest_start/FunctionScope-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
^$
|
||||
@@ -11,6 +11,8 @@ run_ctest_start(StartQuiet Experimental QUIET)
|
||||
|
||||
run_ctest_start(ConfigInSource Experimental)
|
||||
|
||||
run_ctest_start(FunctionScope Experimental QUIET)
|
||||
|
||||
function(run_ConfigInBuild)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/ConfigInBuild-build)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
|
||||
@@ -9,5 +9,13 @@ set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@")
|
||||
set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@")
|
||||
set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}")
|
||||
|
||||
function(setup_tests)
|
||||
ctest_start(${ctest_start_args})
|
||||
endfunction()
|
||||
|
||||
set(ctest_start_args "@CASE_CTEST_START_ARGS@")
|
||||
ctest_start(${ctest_start_args})
|
||||
if("@CASE_NAME@" STREQUAL "FunctionScope")
|
||||
setup_tests()
|
||||
else()
|
||||
ctest_start(${ctest_start_args})
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user