| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /* 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 <memory>
- #include <string>
- #include <vector>
- #include "cmCTestGenericHandler.h"
- class cmCTest;
- class cmCTestCommand;
- class cmGlobalGenerator;
- class cmMakefile;
- class cmake;
- /** \class cmCTestScriptHandler
- * \brief A class that handles ctest -S invocations
- */
- class cmCTestScriptHandler : public cmCTestGenericHandler
- {
- public:
- using Superclass = cmCTestGenericHandler;
- /**
- * Add a script to run, and if is should run in the current process
- */
- void AddConfigurationScript(const std::string&, bool pscope);
- /**
- * Run a dashboard using a specified confiuration script
- */
- int ProcessHandler() override;
- /*
- * Run a script
- */
- static bool RunScript(cmCTest* ctest, cmMakefile* mf,
- const std::string& script, bool InProcess,
- int* returnValue);
- /*
- * Some elapsed time handling functions
- */
- void UpdateElapsedTime();
- cmCTestScriptHandler();
- cmCTestScriptHandler(const cmCTestScriptHandler&) = delete;
- const cmCTestScriptHandler& operator=(const cmCTestScriptHandler&) = delete;
- ~cmCTestScriptHandler() override;
- void Initialize(cmCTest* ctest) override;
- void CreateCMake();
- cmake* GetCMake() { return this->CMake.get(); }
- cmMakefile* GetMakefile() { return this->Makefile.get(); }
- private:
- // reads in a script
- int ReadInScript(const std::string& total_script_arg);
- int ExecuteScript(const std::string& total_script_arg);
- int RunConfigurationScript(const std::string& script, bool pscope);
- // Add ctest command
- void AddCTestCommand(std::string const& name,
- std::unique_ptr<cmCTestCommand> command);
- std::vector<std::string> ConfigurationScripts;
- std::vector<bool> ScriptProcessScope;
- std::unique_ptr<cmMakefile> Makefile;
- cmMakefile* ParentMakefile = nullptr;
- std::unique_ptr<cmGlobalGenerator> GlobalGenerator;
- std::unique_ptr<cmake> CMake;
- };
|