diff options
Diffstat (limited to 'Source/CTest/cmCTestTestHandler.h')
-rw-r--r-- | Source/CTest/cmCTestTestHandler.h | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index 7f3f5e4f8..eab75d0eb 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -5,21 +5,24 @@ #include "cmConfigure.h" // IWYU pragma: keep -#include "cmCTestGenericHandler.h" -#include "cmDuration.h" -#include "cmListFileCache.h" - -#include "cmsys/RegularExpression.hxx" #include <chrono> #include <cstdint> #include <iosfwd> #include <map> #include <set> -#include <stddef.h> #include <string> #include <utility> #include <vector> +#include <stddef.h> + +#include "cmsys/RegularExpression.hxx" + +#include "cmCTestGenericHandler.h" +#include "cmCTestResourceSpec.h" +#include "cmDuration.h" +#include "cmListFileCache.h" + class cmCTest; class cmMakefile; class cmXMLWriter; @@ -34,7 +37,7 @@ class cmCTestTestHandler : public cmCTestGenericHandler friend class cmCTestMultiProcessHandler; public: - typedef cmCTestGenericHandler Superclass; + using Superclass = cmCTestGenericHandler; /** * The main entry point for this class @@ -100,6 +103,16 @@ public: void Initialize() override; + struct cmCTestTestResourceRequirement + { + std::string ResourceType; + int SlotsNeeded; + int UnitsNeeded; + + bool operator==(const cmCTestTestResourceRequirement& other) const; + bool operator!=(const cmCTestTestResourceRequirement& other) const; + }; + // NOTE: This struct is Saved/Restored // in cmCTestTestHandler, if you add to this class // then you must add the new members to that code or @@ -118,6 +131,8 @@ public: std::vector<std::pair<cmsys::RegularExpression, std::string>> RequiredRegularExpressions; std::vector<std::pair<cmsys::RegularExpression, std::string>> + SkipRegularExpressions; + std::vector<std::pair<cmsys::RegularExpression, std::string>> TimeoutRegularExpressions; std::map<std::string, std::string> Measurements; bool IsInBasedOnREOptions; @@ -143,6 +158,7 @@ public: std::set<std::string> FixturesCleanup; std::set<std::string> FixturesRequired; std::set<std::string> RequireSuccessDepends; + std::vector<std::vector<cmCTestTestResourceRequirement>> ResourceGroups; // Private test generator properties used to track backtraces cmListFileBacktrace Backtrace; }; @@ -186,15 +202,31 @@ public: std::vector<std::string>& extraPaths, std::vector<std::string>& failed); - typedef std::vector<cmCTestTestProperties> ListOfTests; + static bool ParseResourceGroupsProperty( + const std::string& val, + std::vector<std::vector<cmCTestTestResourceRequirement>>& resourceGroups); + + using ListOfTests = std::vector<cmCTestTestProperties>; protected: + using SetOfTests = + std::set<cmCTestTestHandler::cmCTestTestResult, cmCTestTestResultLess>; + // compute a final test list virtual int PreProcessHandler(); virtual int PostProcessHandler(); virtual void GenerateTestCommand(std::vector<std::string>& args, int test); int ExecuteCommands(std::vector<std::string>& vec); + bool ProcessOptions(); + void LogTestSummary(const std::vector<std::string>& passed, + const std::vector<std::string>& failed, + const cmDuration& durationInSecs); + void LogDisabledTests(const std::vector<cmCTestTestResult>& disabledTests); + void LogFailedTests(const std::vector<std::string>& failed, + const SetOfTests& resultsSet); + bool GenerateXML(); + void WriteTestResultHeader(cmXMLWriter& xml, cmCTestTestResult const& result); void WriteTestResultFooter(cmXMLWriter& xml, @@ -207,7 +239,7 @@ protected: cmDuration ElapsedTestingTime; - typedef std::vector<cmCTestTestResult> TestResultsVector; + using TestResultsVector = std::vector<cmCTestTestResult>; TestResultsVector TestResults; std::vector<std::string> CustomTestsIgnore; @@ -304,6 +336,9 @@ private: cmsys::RegularExpression IncludeTestsRegularExpression; cmsys::RegularExpression ExcludeTestsRegularExpression; + bool UseResourceSpec; + cmCTestResourceSpec ResourceSpec; + void GenerateRegressionImages(cmXMLWriter& xml, const std::string& dart); cmsys::RegularExpression DartStuff1; void CheckLabelFilter(cmCTestTestProperties& it); |