mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-11 09:35:12 +00:00
ctest: refactor SetCMakeVariables to use a mapping table
Encapsulate the association between CTEST_* variables and CTest configuration keys into a reusable table. This table will serve as the single source of truth for subsequent commits that extend the mapping and add reverse-lookup support.
This commit is contained in:
@@ -3146,83 +3146,90 @@ bool cmCTest::SetCTestConfigurationFromCMakeVariable(
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace {
|
||||
// Mapping of CTEST_* variable names to CTest configuration keys.
|
||||
struct CTestVarConfigEntry
|
||||
{
|
||||
char const* Var; // CTEST_* variable name
|
||||
char const* Config; // CTest configuration key
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
CTestVarConfigEntry const kCTestVarConfigMap[] = {
|
||||
// General
|
||||
{ "CTEST_SITE", "Site" },
|
||||
{ "CTEST_BUILD_NAME", "BuildName" },
|
||||
{ "CTEST_NIGHTLY_START_TIME", "NightlyStartTime" },
|
||||
{ "CTEST_SOURCE_DIRECTORY", "SourceDirectory" },
|
||||
{ "CTEST_BINARY_DIRECTORY", "BuildDirectory" },
|
||||
// Update step
|
||||
{ "CTEST_UPDATE_COMMAND", "UpdateCommand" },
|
||||
{ "CTEST_UPDATE_OPTIONS", "UpdateOptions" },
|
||||
{ "CTEST_UPDATE_TYPE", "UpdateType" },
|
||||
{ "CTEST_CVS_COMMAND", "CVSCommand" },
|
||||
{ "CTEST_CVS_UPDATE_OPTIONS", "CVSUpdateOptions" },
|
||||
{ "CTEST_SVN_COMMAND", "SVNCommand" },
|
||||
{ "CTEST_SVN_UPDATE_OPTIONS", "SVNUpdateOptions" },
|
||||
{ "CTEST_SVN_OPTIONS", "SVNOptions" },
|
||||
{ "CTEST_BZR_COMMAND", "BZRCommand" },
|
||||
{ "CTEST_BZR_UPDATE_OPTIONS", "BZRUpdateOptions" },
|
||||
{ "CTEST_GIT_COMMAND", "GITCommand" },
|
||||
{ "CTEST_GIT_UPDATE_OPTIONS", "GITUpdateOptions" },
|
||||
{ "CTEST_GIT_INIT_SUBMODULES", "GITInitSubmodules" },
|
||||
{ "CTEST_GIT_UPDATE_CUSTOM", "GITUpdateCustom" },
|
||||
{ "CTEST_UPDATE_VERSION_ONLY", "UpdateVersionOnly" },
|
||||
{ "CTEST_UPDATE_VERSION_OVERRIDE", "UpdateVersionOverride" },
|
||||
{ "CTEST_HG_COMMAND", "HGCommand" },
|
||||
{ "CTEST_HG_UPDATE_OPTIONS", "HGUpdateOptions" },
|
||||
{ "CTEST_P4_COMMAND", "P4Command" },
|
||||
{ "CTEST_P4_UPDATE_CUSTOM", "P4UpdateCustom" },
|
||||
{ "CTEST_P4_UPDATE_OPTIONS", "P4UpdateOptions" },
|
||||
{ "CTEST_P4_CLIENT", "P4Client" },
|
||||
{ "CTEST_P4_OPTIONS", "P4Options" },
|
||||
// Configure step
|
||||
{ "CTEST_CONFIGURE_COMMAND", "ConfigureCommand" },
|
||||
{ "CTEST_LABELS_FOR_SUBPROJECTS", "LabelsForSubprojects" },
|
||||
// Build step
|
||||
{ "CTEST_BUILD_COMMAND", "MakeCommand" },
|
||||
{ "CTEST_USE_LAUNCHERS", "UseLaunchers" },
|
||||
// Test step
|
||||
{ "CTEST_TEST_TIMEOUT", "TimeOut" },
|
||||
{ "CTEST_TEST_COVERAGE_TOOL", "CTestTestCoverageTool" },
|
||||
// Coverage step
|
||||
{ "CTEST_COVERAGE_COMMAND", "CoverageCommand" },
|
||||
{ "CTEST_COVERAGE_EXTRA_FLAGS", "CoverageExtraFlags" },
|
||||
// MemCheck step
|
||||
{ "CTEST_MEMORYCHECK_TYPE", "MemoryCheckType" },
|
||||
{ "CTEST_MEMORYCHECK_SANITIZER_OPTIONS", "MemoryCheckSanitizerOptions" },
|
||||
{ "CTEST_MEMORYCHECK_COMMAND", "MemoryCheckCommand" },
|
||||
{ "CTEST_MEMORYCHECK_COMMAND_OPTIONS", "MemoryCheckCommandOptions" },
|
||||
{ "CTEST_MEMORYCHECK_SUPPRESSIONS_FILE", "MemoryCheckSuppressionFile" },
|
||||
// Submit step
|
||||
{ "CTEST_SUBMIT_URL", "SubmitURL" },
|
||||
{ "CTEST_DROP_METHOD", "DropMethod" },
|
||||
{ "CTEST_DROP_SITE_USER", "DropSiteUser" },
|
||||
{ "CTEST_DROP_SITE_PASSWORD", "DropSitePassword" },
|
||||
{ "CTEST_DROP_SITE", "DropSite" },
|
||||
{ "CTEST_DROP_LOCATION", "DropLocation" },
|
||||
{ "CTEST_TLS_VERIFY", "TLSVerify" },
|
||||
{ "CTEST_TLS_VERSION", "TLSVersion" },
|
||||
{ "CTEST_CURL_OPTIONS", "CurlOptions" },
|
||||
{ "CTEST_SUBMIT_INACTIVITY_TIMEOUT", "SubmitInactivityTimeout" },
|
||||
};
|
||||
// clang-format on
|
||||
} // namespace
|
||||
|
||||
void cmCTest::SetCMakeVariables(cmMakefile& mf)
|
||||
{
|
||||
auto set = [&](char const* cmake_var, char const* ctest_opt) {
|
||||
std::string val = this->GetCTestConfiguration(ctest_opt);
|
||||
for (auto const& entry : kCTestVarConfigMap) {
|
||||
std::string val = this->GetCTestConfiguration(entry.Config);
|
||||
if (!val.empty()) {
|
||||
cmCTestOptionalLog(
|
||||
this, HANDLER_VERBOSE_OUTPUT,
|
||||
"SetCMakeVariable:" << cmake_var << ":" << val << std::endl, false);
|
||||
mf.AddDefinition(cmake_var, val);
|
||||
"SetCMakeVariable:" << entry.Var << ":" << val << std::endl, false);
|
||||
mf.AddDefinition(entry.Var, val);
|
||||
}
|
||||
};
|
||||
|
||||
set("CTEST_SITE", "Site");
|
||||
set("CTEST_BUILD_NAME", "BuildName");
|
||||
set("CTEST_NIGHTLY_START_TIME", "NightlyStartTime");
|
||||
set("CTEST_SOURCE_DIRECTORY", "SourceDirectory");
|
||||
set("CTEST_BINARY_DIRECTORY", "BuildDirectory");
|
||||
|
||||
// CTest Update Step
|
||||
set("CTEST_UPDATE_COMMAND", "UpdateCommand");
|
||||
set("CTEST_UPDATE_OPTIONS", "UpdateOptions");
|
||||
set("CTEST_UPDATE_TYPE", "UpdateType");
|
||||
set("CTEST_CVS_COMMAND", "CVSCommand");
|
||||
set("CTEST_CVS_UPDATE_OPTIONS", "CVSUpdateOptions");
|
||||
set("CTEST_SVN_COMMAND", "SVNCommand");
|
||||
set("CTEST_SVN_UPDATE_OPTIONS", "SVNUpdateOptions");
|
||||
set("CTEST_SVN_OPTIONS", "SVNOptions");
|
||||
set("CTEST_BZR_COMMAND", "BZRCommand");
|
||||
set("CTEST_BZR_UPDATE_OPTIONS", "BZRUpdateOptions");
|
||||
set("CTEST_GIT_COMMAND", "GITCommand");
|
||||
set("CTEST_GIT_UPDATE_OPTIONS", "GITUpdateOptions");
|
||||
set("CTEST_GIT_INIT_SUBMODULES", "GITInitSubmodules");
|
||||
set("CTEST_GIT_UPDATE_CUSTOM", "GITUpdateCustom");
|
||||
set("CTEST_UPDATE_VERSION_ONLY", "UpdateVersionOnly");
|
||||
set("CTEST_UPDATE_VERSION_OVERRIDE", "UpdateVersionOverride");
|
||||
set("CTEST_HG_COMMAND", "HGCommand");
|
||||
set("CTEST_HG_UPDATE_OPTIONS", "HGUpdateOptions");
|
||||
set("CTEST_P4_COMMAND", "P4Command");
|
||||
set("CTEST_P4_UPDATE_CUSTOM", "P4UpdateCustom");
|
||||
set("CTEST_P4_UPDATE_OPTIONS", "P4UpdateOptions");
|
||||
set("CTEST_P4_CLIENT", "P4Client");
|
||||
set("CTEST_P4_OPTIONS", "P4Options");
|
||||
|
||||
// CTest Configure Step
|
||||
set("CTEST_CONFIGURE_COMMAND", "ConfigureCommand");
|
||||
set("CTEST_LABELS_FOR_SUBPROJECTS", "LabelsForSubprojects");
|
||||
|
||||
// CTest Build Step
|
||||
set("CTEST_BUILD_COMMAND", "MakeCommand");
|
||||
set("CTEST_USE_LAUNCHERS", "UseLaunchers");
|
||||
|
||||
// CTest Test Step
|
||||
set("CTEST_TEST_TIMEOUT", "TimeOut");
|
||||
set("CTEST_TEST_COVERAGE_TOOL", "CTestTestCoverageTool");
|
||||
|
||||
// CTest Coverage Step
|
||||
set("CTEST_COVERAGE_COMMAND", "CoverageCommand");
|
||||
set("CTEST_COVERAGE_EXTRA_FLAGS", "CoverageExtraFlags");
|
||||
|
||||
// CTest MemCheck Step
|
||||
set("CTEST_MEMORYCHECK_TYPE", "MemoryCheckType");
|
||||
set("CTEST_MEMORYCHECK_SANITIZER_OPTIONS", "MemoryCheckSanitizerOptions");
|
||||
set("CTEST_MEMORYCHECK_COMMAND", "MemoryCheckCommand");
|
||||
set("CTEST_MEMORYCHECK_COMMAND_OPTIONS", "MemoryCheckCommandOptions");
|
||||
set("CTEST_MEMORYCHECK_SUPPRESSIONS_FILE", "MemoryCheckSuppressionFile");
|
||||
|
||||
// CTest Submit Step
|
||||
set("CTEST_SUBMIT_URL", "SubmitURL");
|
||||
set("CTEST_DROP_METHOD", "DropMethod");
|
||||
set("CTEST_DROP_SITE_USER", "DropSiteUser");
|
||||
set("CTEST_DROP_SITE_PASSWORD", "DropSitePassword");
|
||||
set("CTEST_DROP_SITE", "DropSite");
|
||||
set("CTEST_DROP_LOCATION", "DropLocation");
|
||||
set("CTEST_TLS_VERIFY", "TLSVerify");
|
||||
set("CTEST_TLS_VERSION", "TLSVersion");
|
||||
set("CTEST_CURL_OPTIONS", "CurlOptions");
|
||||
set("CTEST_SUBMIT_INACTIVITY_TIMEOUT", "SubmitInactivityTimeout");
|
||||
}
|
||||
}
|
||||
|
||||
bool cmCTest::RunCommand(std::vector<std::string> const& args,
|
||||
|
||||
Reference in New Issue
Block a user