/* 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 #include #include #include #include "cmCTest.h" #include "cmCTestGenericHandler.h" /** \class cmCTestSubmitHandler * \brief Helper class for CTest * * Submit testing results * */ class cmCTestSubmitHandler : public cmCTestGenericHandler { public: using Superclass = cmCTestGenericHandler; cmCTestSubmitHandler(); ~cmCTestSubmitHandler() override { this->LogFile = nullptr; } /* * The main entry point for this class */ int ProcessHandler() override; void Initialize() override; /** Specify a set of parts (by name) to submit. */ void SelectParts(std::set const& parts); /** Specify a set of files to submit. */ void SelectFiles(std::set const& files); // handle the cdash file upload protocol int HandleCDashUploadFile(std::string const& file, std::string const& type); void SetHttpHeaders(std::vector const& v) { this->HttpHeaders = v; } private: void SetLogFile(std::ostream* ost) { this->LogFile = ost; } /** * Submit file using various ways */ bool SubmitUsingHTTP(const std::string& localprefix, const std::vector& files, const std::string& remoteprefix, const std::string& url); using cmCTestSubmitHandlerVectorOfChar = std::vector; void ParseResponse(cmCTestSubmitHandlerVectorOfChar chunk); std::string GetSubmitResultsPrefix(); class ResponseParser; std::string HTTPProxy; int HTTPProxyType; std::string HTTPProxyAuth; std::ostream* LogFile; bool SubmitPart[cmCTest::PartCount]; bool HasWarnings; bool HasErrors; std::set Files; std::vector HttpHeaders; };