/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include "cmDuration.h" class cmake; class cmCTest; /** \class cmCTestBuildAndTest * \brief A class that handles ctest -S invocations * */ class cmCTestBuildAndTest { public: /* * The main entry point for this class */ int Run(); cmCTestBuildAndTest(cmCTest* ctest); private: cmCTest* CTest; bool RunCMake(cmake* cm); bool RunTest(std::vector const& args, int* retVal, cmDuration timeout); std::string BuildGenerator; std::string BuildGeneratorPlatform; std::string BuildGeneratorToolset; std::vector BuildOptions; bool BuildTwoConfig = false; std::string BuildMakeProgram; std::string ConfigSample; std::string SourceDir; std::string BinaryDir; std::string BuildProject; std::string TestCommand; bool BuildNoClean = false; std::string BuildRunDir; std::string ExecutableDirectory; std::vector TestCommandArgs; std::vector BuildTargets; bool BuildNoCMake = false; cmDuration Timeout = cmDuration::zero(); friend class cmCTest; };