mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
discover_tests: Add TEST_LIST to CTest command
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <cstdlib>
|
||||
#include <iterator>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <cmsys/RegularExpression.hxx>
|
||||
@@ -87,6 +88,7 @@ private:
|
||||
|
||||
bool cmCTestDiscoverTests(cmTestDiscoveryArgs const& args,
|
||||
cmCTestTestHandler* handler,
|
||||
std::vector<std::string>& testList,
|
||||
cmExecutionStatus& status)
|
||||
{
|
||||
cmsys::RegularExpression re;
|
||||
@@ -136,7 +138,7 @@ bool cmCTestDiscoverTests(cmTestDiscoveryArgs const& args,
|
||||
continue;
|
||||
}
|
||||
|
||||
auto const testName = replace(args.TestName);
|
||||
auto testName = replace(args.TestName);
|
||||
auto testArgs = std::vector<std::string>{ testName };
|
||||
testArgs.reserve(1 + args.Command.size() + args.TestArgs.size());
|
||||
std::copy(args.Command.begin(), args.Command.end(),
|
||||
@@ -157,6 +159,8 @@ bool cmCTestDiscoverTests(cmTestDiscoveryArgs const& args,
|
||||
if (!handler->SetTestsProperties(testProperties)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
testList.push_back(std::move(testName));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
|
||||
#include "cmConfigure.h" // IWYU pragma: keep
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
struct cmTestDiscoveryArgs;
|
||||
class cmCTestTestHandler;
|
||||
class cmExecutionStatus;
|
||||
|
||||
bool cmCTestDiscoverTests(cmTestDiscoveryArgs const& args,
|
||||
cmCTestTestHandler* handler,
|
||||
std::vector<std::string>& testList,
|
||||
cmExecutionStatus& status);
|
||||
|
||||
@@ -263,8 +263,13 @@ public:
|
||||
bool cmCTestDiscoverTestsCommand::InitialPass(
|
||||
std::vector<std::string> const& args, cmExecutionStatus& status)
|
||||
{
|
||||
using Arguments = cmTestDiscoveryArgs;
|
||||
static auto const parser = cmTestDiscoveryParser<Arguments>();
|
||||
struct Arguments : cmTestDiscoveryArgs
|
||||
{
|
||||
std::string TestList;
|
||||
};
|
||||
static auto const parser =
|
||||
cmArgumentParser<Arguments>{ cmTestDiscoveryParser<Arguments>() } //
|
||||
.Bind("TEST_LIST"_s, &Arguments::TestList);
|
||||
|
||||
auto unparsed = std::vector<std::string>{};
|
||||
Arguments const arguments = parser.Parse(args, &unparsed);
|
||||
@@ -277,7 +282,20 @@ bool cmCTestDiscoverTestsCommand::InitialPass(
|
||||
return false;
|
||||
}
|
||||
|
||||
return cmCTestDiscoverTests(arguments, this->TestHandler, status);
|
||||
std::vector<std::string> testList;
|
||||
if (!cmCTestDiscoverTests(arguments, this->TestHandler, testList, status)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!arguments.TestList.empty()) {
|
||||
for (std::string& testName : testList) {
|
||||
cmSystemTools::ReplaceString(testName, ";", "\\;");
|
||||
}
|
||||
status.GetMakefile().AddDefinition(arguments.TestList,
|
||||
cmList::to_string(testList));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
class cmCTestSetTestsPropertiesCommand : public cmCTestCommand
|
||||
|
||||
Reference in New Issue
Block a user