Move cURL dependent code out of CMakeLib to fix complex tests.
This commit is contained in:
parent
766ef1d011
commit
3cb2a0ffa6
|
@ -154,6 +154,58 @@ std::string cmCTest::CurrentTime()
|
|||
return cmXMLSafe(cmCTest::CleanString(current_time)).str();
|
||||
}
|
||||
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
//----------------------------------------------------------------------------
|
||||
static size_t
|
||||
HTTPResponseCallback(void *ptr, size_t size, size_t nmemb, void *data)
|
||||
{
|
||||
register int realsize = (int)(size * nmemb);
|
||||
|
||||
std::string *response
|
||||
= static_cast<std::string*>(data);
|
||||
const char* chPtr = static_cast<char*>(ptr);
|
||||
*response += chPtr;
|
||||
|
||||
return realsize;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int cmCTest::HTTPRequest(std::string url, HTTPMethod method,
|
||||
std::string& response,
|
||||
std::string fields, int timeout)
|
||||
{
|
||||
CURL* curl;
|
||||
::curl_global_init(CURL_GLOBAL_ALL);
|
||||
curl = ::curl_easy_init();
|
||||
|
||||
//set request options
|
||||
if(method == cmCTest::HTTP_GET && fields.size())
|
||||
{
|
||||
url += "?" + fields;
|
||||
}
|
||||
else
|
||||
{
|
||||
::curl_easy_setopt(curl, CURLOPT_POST, 1);
|
||||
::curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fields.c_str());
|
||||
}
|
||||
::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
::curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
|
||||
::curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
|
||||
//set response options
|
||||
::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HTTPResponseCallback);
|
||||
::curl_easy_setopt(curl, CURLOPT_FILE, (void *)&response);
|
||||
::curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
|
||||
|
||||
CURLcode res = ::curl_easy_perform(curl);
|
||||
|
||||
::curl_easy_cleanup(curl);
|
||||
::curl_global_cleanup();
|
||||
|
||||
return static_cast<int>(res);
|
||||
}
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
std::string cmCTest::MakeURLSafe(const std::string& str)
|
||||
{
|
||||
|
@ -326,7 +378,7 @@ std::string cmCTest::GetCDashVersion()
|
|||
std::string url = "http://";
|
||||
url += this->GetCTestConfiguration("DropSite") + "/CDash/api/getversion.php";
|
||||
|
||||
int res = cmSystemTools::HTTPRequest(url, cmSystemTools::HTTP_GET, response);
|
||||
int res = cmCTest::HTTPRequest(url, cmCTest::HTTP_GET, response);
|
||||
|
||||
return res ? this->GetCTestConfiguration("CDashVersion") : response;
|
||||
#else
|
||||
|
|
|
@ -80,6 +80,19 @@ public:
|
|||
bool Enabled;
|
||||
std::string Name;
|
||||
};
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
enum HTTPMethod {
|
||||
HTTP_GET,
|
||||
HTTP_POST
|
||||
};
|
||||
|
||||
/**
|
||||
* Perform an HTTP request.
|
||||
*/
|
||||
static int HTTPRequest(std::string url, HTTPMethod method,
|
||||
std::string& response,
|
||||
std::string fields = "", int timeout = 10);
|
||||
#endif
|
||||
|
||||
/** Get a testing part id from its string name. Returns PartCount
|
||||
if the string does not name a valid part. */
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include <cmlibarchive/libarchive/archive.h>
|
||||
#include <cmlibarchive/libarchive/archive_entry.h>
|
||||
# include <cmsys/Terminal.h>
|
||||
#include "cm_curl.h"
|
||||
#endif
|
||||
#include <cmsys/stl/algorithm>
|
||||
|
||||
|
@ -2926,55 +2925,3 @@ bool cmSystemTools::CheckRPath(std::string const& file,
|
|||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static size_t
|
||||
HTTPResponseCallback(void *ptr, size_t size, size_t nmemb, void *data)
|
||||
{
|
||||
register int realsize = (int)(size * nmemb);
|
||||
|
||||
std::string *response
|
||||
= static_cast<std::string*>(data);
|
||||
const char* chPtr = static_cast<char*>(ptr);
|
||||
*response += chPtr;
|
||||
|
||||
return realsize;
|
||||
}
|
||||
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
//----------------------------------------------------------------------------
|
||||
int cmSystemTools::HTTPRequest(std::string url, HTTPMethod method,
|
||||
std::string& response,
|
||||
std::string fields, int timeout)
|
||||
{
|
||||
CURL* curl;
|
||||
::curl_global_init(CURL_GLOBAL_ALL);
|
||||
curl = ::curl_easy_init();
|
||||
|
||||
//set request options
|
||||
if(method == cmSystemTools::HTTP_GET && fields.size())
|
||||
{
|
||||
url += "?" + fields;
|
||||
}
|
||||
else
|
||||
{
|
||||
::curl_easy_setopt(curl, CURLOPT_POST, 1);
|
||||
::curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fields.c_str());
|
||||
}
|
||||
::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
::curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
|
||||
::curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
|
||||
//set response options
|
||||
::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HTTPResponseCallback);
|
||||
::curl_easy_setopt(curl, CURLOPT_FILE, (void *)&response);
|
||||
::curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
|
||||
|
||||
CURLcode res = ::curl_easy_perform(curl);
|
||||
|
||||
::curl_easy_cleanup(curl);
|
||||
::curl_global_cleanup();
|
||||
|
||||
return static_cast<int>(res);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -342,18 +342,6 @@ public:
|
|||
static std::string RelativePath(const char* local, const char* remote);
|
||||
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
enum HTTPMethod {
|
||||
HTTP_GET,
|
||||
HTTP_POST
|
||||
};
|
||||
|
||||
/**
|
||||
* Perform an HTTP request.
|
||||
*/
|
||||
static int HTTPRequest(std::string url, HTTPMethod method,
|
||||
std::string& response,
|
||||
std::string fields = "", int timeout = 10);
|
||||
|
||||
/** Remove an environment variable */
|
||||
static bool UnsetEnv(const char* value);
|
||||
|
||||
|
|
Loading…
Reference in New Issue