123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmCTestBuildHandler_h
- #define cmCTestBuildHandler_h
- #include "cmConfigure.h" // IWYU pragma: keep
- #include "cmCTestGenericHandler.h"
- #include "cmDuration.h"
- #include "cmProcessOutput.h"
- #include "cmsys/RegularExpression.hxx"
- #include <chrono>
- #include <deque>
- #include <iosfwd>
- #include <stddef.h>
- #include <string>
- #include <vector>
- class cmMakefile;
- class cmXMLWriter;
- /** \class cmCTestBuildHandler
- * \brief A class that handles ctest -S invocations
- *
- */
- class cmCTestBuildHandler : public cmCTestGenericHandler
- {
- public:
- typedef cmCTestGenericHandler Superclass;
- typedef cmProcessOutput::Encoding Encoding;
- /*
- * The main entry point for this class
- */
- int ProcessHandler() override;
- cmCTestBuildHandler();
- void PopulateCustomVectors(cmMakefile* mf) override;
- /**
- * Initialize handler
- */
- void Initialize() override;
- int GetTotalErrors() { return this->TotalErrors; }
- int GetTotalWarnings() { return this->TotalWarnings; }
- private:
- std::string GetMakeCommand();
- //! Run command specialized for make and configure. Returns process status
- // and retVal is return value or exception.
- int RunMakeCommand(const char* command, int* retVal, const char* dir,
- int timeout, std::ostream& ofs,
- Encoding encoding = cmProcessOutput::Auto);
- enum
- {
- b_REGULAR_LINE,
- b_WARNING_LINE,
- b_ERROR_LINE
- };
- class cmCTestCompileErrorWarningRex
- {
- public:
- cmCTestCompileErrorWarningRex() {}
- int FileIndex;
- int LineIndex;
- cmsys::RegularExpression RegularExpression;
- };
- struct cmCTestBuildErrorWarning
- {
- bool Error;
- int LogLine;
- std::string Text;
- std::string SourceFile;
- std::string SourceFileTail;
- int LineNumber;
- std::string PreContext;
- std::string PostContext;
- };
- // generate the XML output
- void GenerateXMLHeader(cmXMLWriter& xml);
- void GenerateXMLLaunched(cmXMLWriter& xml);
- void GenerateXMLLogScraped(cmXMLWriter& xml);
- void GenerateXMLFooter(cmXMLWriter& xml, cmDuration elapsed_build_time);
- bool IsLaunchedErrorFile(const char* fname);
- bool IsLaunchedWarningFile(const char* fname);
- std::string StartBuild;
- std::string EndBuild;
- std::chrono::system_clock::time_point StartBuildTime;
- std::chrono::system_clock::time_point EndBuildTime;
- std::vector<std::string> CustomErrorMatches;
- std::vector<std::string> CustomErrorExceptions;
- std::vector<std::string> CustomWarningMatches;
- std::vector<std::string> CustomWarningExceptions;
- std::vector<std::string> ReallyCustomWarningMatches;
- std::vector<std::string> ReallyCustomWarningExceptions;
- std::vector<cmCTestCompileErrorWarningRex> ErrorWarningFileLineRegex;
- std::vector<cmsys::RegularExpression> ErrorMatchRegex;
- std::vector<cmsys::RegularExpression> ErrorExceptionRegex;
- std::vector<cmsys::RegularExpression> WarningMatchRegex;
- std::vector<cmsys::RegularExpression> WarningExceptionRegex;
- typedef std::deque<char> t_BuildProcessingQueueType;
- void ProcessBuffer(const char* data, size_t length, size_t& tick,
- size_t tick_len, std::ostream& ofs,
- t_BuildProcessingQueueType* queue);
- int ProcessSingleLine(const char* data);
- t_BuildProcessingQueueType BuildProcessingQueue;
- t_BuildProcessingQueueType BuildProcessingErrorQueue;
- size_t BuildOutputLogSize;
- std::vector<char> CurrentProcessingLine;
- std::string SimplifySourceDir;
- std::string SimplifyBuildDir;
- size_t OutputLineCounter;
- typedef std::vector<cmCTestBuildErrorWarning> t_ErrorsAndWarningsVector;
- t_ErrorsAndWarningsVector ErrorsAndWarnings;
- t_ErrorsAndWarningsVector::iterator LastErrorOrWarning;
- size_t PostContextCount;
- size_t MaxPreContext;
- size_t MaxPostContext;
- std::deque<std::string> PreContext;
- int TotalErrors;
- int TotalWarnings;
- char LastTickChar;
- bool ErrorQuotaReached;
- bool WarningQuotaReached;
- int MaxErrors;
- int MaxWarnings;
- bool UseCTestLaunch;
- std::string CTestLaunchDir;
- class LaunchHelper;
- friend class LaunchHelper;
- class FragmentCompare;
- };
- #endif
|