From fda055c2605420a2a23d1a2022a338a5d2de5861 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Tue, 28 Jan 2025 09:12:28 +0100 Subject: cmCTestConfigureHandler: Move class into cmCTestConfigureCommand.cxx Place declaration and definitions into places where following refactoring will cause minimal deltas. --- Source/CMakeLists.txt | 1 - Source/CTest/cmCTestConfigureCommand.cxx | 99 +++++++++++++++++++++++++++++- Source/CTest/cmCTestConfigureHandler.cxx | 101 ------------------------------- Source/CTest/cmCTestConfigureHandler.h | 26 -------- 4 files changed, 98 insertions(+), 129 deletions(-) delete mode 100644 Source/CTest/cmCTestConfigureHandler.cxx delete mode 100644 Source/CTest/cmCTestConfigureHandler.h diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 06eb9b4..745c38c 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1062,7 +1062,6 @@ add_library( CTest/cmCTestBuildHandler.cxx CTest/cmCTestCommand.cxx CTest/cmCTestConfigureCommand.cxx - CTest/cmCTestConfigureHandler.cxx CTest/cmCTestCoverageCommand.cxx CTest/cmCTestCoverageHandler.cxx CTest/cmCTestCurl.cxx diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index 27f4074..87b7e29 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -2,8 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCTestConfigureCommand.h" +#include #include #include +#include #include #include @@ -12,17 +14,30 @@ #include "cmArgumentParser.h" #include "cmCTest.h" -#include "cmCTestConfigureHandler.h" #include "cmCTestGenericHandler.h" +#include "cmDuration.h" #include "cmExecutionStatus.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" #include "cmList.h" #include "cmMakefile.h" #include "cmStringAlgorithms.h" #include "cmSystemTools.h" #include "cmValue.h" +#include "cmXMLWriter.h" #include "cmake.h" +class cmCTestConfigureHandler : public cmCTestGenericHandler +{ +public: + cmCTestConfigureHandler(cmCTest* ctest) + : cmCTestGenericHandler(ctest) + { + } + + int ProcessHandler() override; +}; + std::unique_ptr cmCTestConfigureCommand::InitializeHandler(HandlerArguments& arguments, cmExecutionStatus& status) const @@ -157,6 +172,88 @@ cmCTestConfigureCommand::InitializeHandler(HandlerArguments& arguments, return std::unique_ptr(std::move(handler)); } +int cmCTestConfigureHandler::ProcessHandler() +{ + cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, + "Configure project" << std::endl, this->Quiet); + std::string cCommand = + this->CTest->GetCTestConfiguration("ConfigureCommand"); + if (cCommand.empty()) { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot find ConfigureCommand key in the DartConfiguration.tcl" + << std::endl); + return -1; + } + + std::string buildDirectory = + this->CTest->GetCTestConfiguration("BuildDirectory"); + if (buildDirectory.empty()) { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot find BuildDirectory key in the DartConfiguration.tcl" + << std::endl); + return -1; + } + + auto elapsed_time_start = std::chrono::steady_clock::now(); + std::string output; + int retVal = 0; + bool res = false; + if (!this->CTest->GetShowOnly()) { + cmGeneratedFileStream os; + if (!this->StartResultingXML(cmCTest::PartConfigure, "Configure", os)) { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot open configure file" << std::endl); + return 1; + } + std::string start_time = this->CTest->CurrentTime(); + auto start_time_time = std::chrono::system_clock::now(); + + cmGeneratedFileStream ofs; + this->StartLogFile("Configure", ofs); + cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + "Configure with command: " << cCommand << std::endl, + this->Quiet); + res = this->CTest->RunMakeCommand(cCommand, output, &retVal, + buildDirectory.c_str(), + cmDuration::zero(), ofs); + + if (ofs) { + ofs.close(); + } + + if (os) { + cmXMLWriter xml(os); + this->CTest->StartXML(xml, this->CMake, this->AppendXML); + this->CTest->GenerateSubprojectsOutput(xml); + xml.StartElement("Configure"); + xml.Element("StartDateTime", start_time); + xml.Element("StartConfigureTime", start_time_time); + xml.Element("ConfigureCommand", cCommand); + cmCTestOptionalLog(this->CTest, DEBUG, "End" << std::endl, this->Quiet); + xml.Element("Log", output); + xml.Element("ConfigureStatus", retVal); + xml.Element("EndDateTime", this->CTest->CurrentTime()); + xml.Element("EndConfigureTime", std::chrono::system_clock::now()); + xml.Element("ElapsedMinutes", + std::chrono::duration_cast( + std::chrono::steady_clock::now() - elapsed_time_start) + .count()); + xml.EndElement(); // Configure + this->CTest->EndXML(xml); + } + } else { + cmCTestOptionalLog(this->CTest, DEBUG, + "Configure with command: " << cCommand << std::endl, + this->Quiet); + } + if (!res || retVal) { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Error(s) when configuring the project" << std::endl); + return -1; + } + return 0; +} + bool cmCTestConfigureCommand::InitialPass(std::vector const& args, cmExecutionStatus& status) const { diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx deleted file mode 100644 index 35b6dce..0000000 --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ /dev/null @@ -1,101 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -#include "cmCTestConfigureHandler.h" - -#include -#include -#include - -#include "cmCTest.h" -#include "cmDuration.h" -#include "cmGeneratedFileStream.h" -#include "cmXMLWriter.h" - -cmCTestConfigureHandler::cmCTestConfigureHandler(cmCTest* ctest) - : Superclass(ctest) -{ -} - -// clearly it would be nice if this were broken up into a few smaller -// functions and commented... -int cmCTestConfigureHandler::ProcessHandler() -{ - cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, - "Configure project" << std::endl, this->Quiet); - std::string cCommand = - this->CTest->GetCTestConfiguration("ConfigureCommand"); - if (cCommand.empty()) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Cannot find ConfigureCommand key in the DartConfiguration.tcl" - << std::endl); - return -1; - } - - std::string buildDirectory = - this->CTest->GetCTestConfiguration("BuildDirectory"); - if (buildDirectory.empty()) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Cannot find BuildDirectory key in the DartConfiguration.tcl" - << std::endl); - return -1; - } - - auto elapsed_time_start = std::chrono::steady_clock::now(); - std::string output; - int retVal = 0; - bool res = false; - if (!this->CTest->GetShowOnly()) { - cmGeneratedFileStream os; - if (!this->StartResultingXML(cmCTest::PartConfigure, "Configure", os)) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Cannot open configure file" << std::endl); - return 1; - } - std::string start_time = this->CTest->CurrentTime(); - auto start_time_time = std::chrono::system_clock::now(); - - cmGeneratedFileStream ofs; - this->StartLogFile("Configure", ofs); - cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "Configure with command: " << cCommand << std::endl, - this->Quiet); - res = this->CTest->RunMakeCommand(cCommand, output, &retVal, - buildDirectory.c_str(), - cmDuration::zero(), ofs); - - if (ofs) { - ofs.close(); - } - - if (os) { - cmXMLWriter xml(os); - this->CTest->StartXML(xml, this->CMake, this->AppendXML); - this->CTest->GenerateSubprojectsOutput(xml); - xml.StartElement("Configure"); - xml.Element("StartDateTime", start_time); - xml.Element("StartConfigureTime", start_time_time); - xml.Element("ConfigureCommand", cCommand); - cmCTestOptionalLog(this->CTest, DEBUG, "End" << std::endl, this->Quiet); - xml.Element("Log", output); - xml.Element("ConfigureStatus", retVal); - xml.Element("EndDateTime", this->CTest->CurrentTime()); - xml.Element("EndConfigureTime", std::chrono::system_clock::now()); - xml.Element("ElapsedMinutes", - std::chrono::duration_cast( - std::chrono::steady_clock::now() - elapsed_time_start) - .count()); - xml.EndElement(); // Configure - this->CTest->EndXML(xml); - } - } else { - cmCTestOptionalLog(this->CTest, DEBUG, - "Configure with command: " << cCommand << std::endl, - this->Quiet); - } - if (!res || retVal) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Error(s) when configuring the project" << std::endl); - return -1; - } - return 0; -} diff --git a/Source/CTest/cmCTestConfigureHandler.h b/Source/CTest/cmCTestConfigureHandler.h deleted file mode 100644 index bcbead7..0000000 --- a/Source/CTest/cmCTestConfigureHandler.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -#pragma once - -#include "cmConfigure.h" // IWYU pragma: keep - -#include "cmCTestGenericHandler.h" - -class cmCTest; - -/** \class cmCTestConfigureHandler - * \brief A class that handles ctest -S invocations - * - */ -class cmCTestConfigureHandler : public cmCTestGenericHandler -{ -public: - using Superclass = cmCTestGenericHandler; - - /* - * The main entry point for this class - */ - int ProcessHandler() override; - - cmCTestConfigureHandler(cmCTest* ctest); -}; -- cgit v0.12