From 0e276c49adc1ef38993f1a90b0f87c732331598c Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 9 Mar 2025 18:14:24 +0530 Subject: Add test registry macro to allow managing multiple specs --- spec/CommandInputSpec.cpp | 2 +- spec/TestUtils.cpp | 20 ++++++++++++++++++++ spec/TestUtils.h | 20 ++++++++++++++++++++ spec/main.cpp | 8 ++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 spec/TestUtils.cpp create mode 100644 spec/main.cpp (limited to 'spec') diff --git a/spec/CommandInputSpec.cpp b/spec/CommandInputSpec.cpp index f6f7f3a..5636a63 100644 --- a/spec/CommandInputSpec.cpp +++ b/spec/CommandInputSpec.cpp @@ -100,5 +100,5 @@ private slots: } }; -QTEST_MAIN(CommandInputSpec) +QTEST_REGISTER(CommandInputSpec) #include "CommandInputSpec.moc" diff --git a/spec/TestUtils.cpp b/spec/TestUtils.cpp new file mode 100644 index 0000000..e496a9b --- /dev/null +++ b/spec/TestUtils.cpp @@ -0,0 +1,20 @@ +#include +#include +#include + +std::vector> &getQTestRegistry() { + static std::vector> registry; + return registry; +} + +int runAllTests() { + int exitCode = 0; + for (const auto &runTest : getQTestRegistry()) { + auto test = runTest(); + // printf(":::: %s\n", test->objectName().toStdString().c_str()); + exitCode |= QTest::qExec(test); + delete test; + } + getQTestRegistry().clear(); + return exitCode; +} diff --git a/spec/TestUtils.h b/spec/TestUtils.h index b2c1cc6..20b3ba8 100644 --- a/spec/TestUtils.h +++ b/spec/TestUtils.h @@ -1,4 +1,7 @@ +#pragma once + #include +#include #include #define ANSI_BOLD "\x1b[1m" @@ -18,3 +21,20 @@ #define xit(msg) \ printf(" ⚪" COLOR_SKIP "SKIPPED it %s" ANSI_RESET "\n", msg); \ if (0) + +#define STRINGIFY(x) #x + +std::vector> &getQTestRegistry(); +int runAllTests(); + +#define QTEST_REGISTER(klass) \ + namespace { \ + const bool registered__##klass = []() { \ + getQTestRegistry().push_back([]() { \ + auto t = new klass; \ + t->setObjectName(#klass); \ + return t; \ + }); \ + return true; \ + }(); \ + }; diff --git a/spec/main.cpp b/spec/main.cpp new file mode 100644 index 0000000..c085886 --- /dev/null +++ b/spec/main.cpp @@ -0,0 +1,8 @@ +#include "TestUtils.h" +#include + +int main(int argc, char **argv) { + QApplication app(argc, argv); + + return runAllTests(); +} -- cgit v1.3.1