discover_tests: Add TEST_LIST to CTest command

This commit is contained in:
Daniel Pfeifer
2026-06-02 21:05:04 +02:00
parent bd870ef98f
commit 1da072eacb
3 changed files with 30 additions and 4 deletions
+5 -1
View File
@@ -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
View File
@@ -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);
+21 -3
View File
@@ -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