aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/testing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore/testing.cpp')
-rw-r--r--src/zencore/testing.cpp47
1 files changed, 38 insertions, 9 deletions
diff --git a/src/zencore/testing.cpp b/src/zencore/testing.cpp
index 6000bd95c..0bae139bd 100644
--- a/src/zencore/testing.cpp
+++ b/src/zencore/testing.cpp
@@ -128,18 +128,24 @@ TestRunner::~TestRunner()
{
}
+void
+TestRunner::SetDefaultSuiteFilter(const char* Pattern)
+{
+ m_Impl->Session.setOption("test-suite", Pattern);
+}
+
int
-TestRunner::ApplyCommandLine(int argc, char const* const* argv)
+TestRunner::ApplyCommandLine(int Argc, char const* const* Argv)
{
- m_Impl->Session.applyCommandLine(argc, argv);
+ m_Impl->Session.applyCommandLine(Argc, Argv);
- for (int i = 1; i < argc; ++i)
+ for (int i = 1; i < Argc; ++i)
{
- if (argv[i] == "--debug"sv)
+ if (Argv[i] == "--debug"sv)
{
zen::logging::SetLogLevel(zen::logging::level::Debug);
}
- else if (argv[i] == "--verbose"sv)
+ else if (Argv[i] == "--verbose"sv)
{
zen::logging::SetLogLevel(zen::logging::level::Trace);
}
@@ -155,20 +161,20 @@ TestRunner::Run()
}
int
-RunTestMain(int argc, char* argv[], [[maybe_unused]] const char* traceName, void (*forceLink)())
+RunTestMain(int Argc, char* Argv[], const char* ExecutableName, void (*ForceLink)())
{
# if ZEN_PLATFORM_WINDOWS
setlocale(LC_ALL, "en_us.UTF8");
# endif
- forceLink();
+ ForceLink();
# if ZEN_PLATFORM_LINUX
zen::IgnoreChildSignals();
# endif
# if ZEN_WITH_TRACE
- zen::TraceInit(traceName);
+ zen::TraceInit(ExecutableName);
zen::TraceOptions TraceCommandlineOptions;
if (GetTraceOptionsFromCommandline(TraceCommandlineOptions))
{
@@ -179,7 +185,30 @@ RunTestMain(int argc, char* argv[], [[maybe_unused]] const char* traceName, void
zen::logging::InitializeLogging();
zen::MaximizeOpenFileCount();
- return ZEN_RUN_TESTS(argc, argv);
+ TestRunner Runner;
+
+ // Derive default suite filter from ExecutableName: "zencore-test" -> "core.*"
+ if (ExecutableName)
+ {
+ std::string_view Name = ExecutableName;
+ if (Name.starts_with("zen"))
+ {
+ Name.remove_prefix(3);
+ }
+ if (Name.ends_with("-test"))
+ {
+ Name.remove_suffix(5);
+ }
+ if (!Name.empty())
+ {
+ std::string Filter(Name);
+ Filter += ".*";
+ Runner.SetDefaultSuiteFilter(Filter.c_str());
+ }
+ }
+
+ Runner.ApplyCommandLine(Argc, Argv);
+ return Runner.Run();
}
} // namespace zen::testing