aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-03-02 09:37:14 +0100
committerGitHub Enterprise <[email protected]>2026-03-02 09:37:14 +0100
commitd604351cb5dc3032a7cb8c84d6ad5f1480325e5c (patch)
treeecf3e5a0de3ae58e2f81988b72ae520a347d4433 /src
parentadded `--verbose` option to zenserver-test and `xmake test` (#798) (diff)
downloadzen-d604351cb5dc3032a7cb8c84d6ad5f1480325e5c.tar.xz
zen-d604351cb5dc3032a7cb8c84d6ad5f1480325e5c.zip
Add test suites (#799)
Makes all test cases part of a test suite. Test suites are named after the module and the name of the file containing the implementation of the test. * This allows for better and more predictable filtering of which test cases to run which should also be able to reduce the time CI spends in tests since it can filter on the tests for that particular module. Also improves `xmake test` behaviour: * instead of an explicit list of projects just enumerate the test projects which are available based on build system state * also introduces logic to avoid running `xmake config` unnecessarily which would invalidate the existing build and do lots of unnecessary work since dependencies were invalidated by the updated config * also invokes build only for the chosen test targets As a bonus, also adds `xmake sln --open` which allows opening IDE after generation of solution/xmake project is done.
Diffstat (limited to 'src')
-rw-r--r--src/zencore/base64.cpp4
-rw-r--r--src/zencore/basicfile.cpp4
-rw-r--r--src/zencore/blake3.cpp4
-rw-r--r--src/zencore/callstack.cpp4
-rw-r--r--src/zencore/compactbinary.cpp8
-rw-r--r--src/zencore/compactbinarybuilder.cpp4
-rw-r--r--src/zencore/compactbinaryjson.cpp4
-rw-r--r--src/zencore/compactbinarypackage.cpp4
-rw-r--r--src/zencore/compactbinaryvalidation.cpp4
-rw-r--r--src/zencore/compactbinaryyaml.cpp4
-rw-r--r--src/zencore/compositebuffer.cpp5
-rw-r--r--src/zencore/compress.cpp4
-rw-r--r--src/zencore/crypto.cpp4
-rw-r--r--src/zencore/filesystem.cpp4
-rw-r--r--src/zencore/include/zencore/testing.h7
-rw-r--r--src/zencore/intmath.cpp4
-rw-r--r--src/zencore/iobuffer.cpp4
-rw-r--r--src/zencore/jobqueue.cpp4
-rw-r--r--src/zencore/logging.cpp4
-rw-r--r--src/zencore/md5.cpp4
-rw-r--r--src/zencore/memoryview.cpp4
-rw-r--r--src/zencore/mpscqueue.cpp2
-rw-r--r--src/zencore/parallelwork.cpp4
-rw-r--r--src/zencore/refcount.cpp4
-rw-r--r--src/zencore/sha1.cpp4
-rw-r--r--src/zencore/sharedbuffer.cpp4
-rw-r--r--src/zencore/stream.cpp4
-rw-r--r--src/zencore/string.cpp4
-rw-r--r--src/zencore/testing.cpp47
-rw-r--r--src/zencore/uid.cpp4
-rw-r--r--src/zencore/workthreadpool.cpp4
-rw-r--r--src/zencore/zencore.cpp2
-rw-r--r--src/zenhttp/clients/httpclientcommon.cpp4
-rw-r--r--src/zenhttp/httpclient.cpp4
-rw-r--r--src/zenhttp/httpclient_test.cpp4
-rw-r--r--src/zenhttp/httpserver.cpp4
-rw-r--r--src/zenhttp/packageformat.cpp4
-rw-r--r--src/zenhttp/security/passwordsecurity.cpp5
-rw-r--r--src/zenhttp/servers/wstest.cpp4
-rw-r--r--src/zennet/statsdclient.cpp4
-rw-r--r--src/zenremotestore/builds/buildmanifest.cpp4
-rw-r--r--src/zenremotestore/builds/buildsavedstate.cpp4
-rw-r--r--src/zenremotestore/builds/buildstorageoperations.cpp4
-rw-r--r--src/zenremotestore/chunking/chunkblock.cpp4
-rw-r--r--src/zenremotestore/chunking/chunkedcontent.cpp4
-rw-r--r--src/zenremotestore/chunking/chunkedfile.cpp4
-rw-r--r--src/zenremotestore/chunking/chunkingcache.cpp4
-rw-r--r--src/zenremotestore/filesystemutils.cpp4
-rw-r--r--src/zenserver-test/buildstore-tests.cpp4
-rw-r--r--src/zenserver-test/cache-tests.cpp4
-rw-r--r--src/zenserver-test/cacherequests.cpp4
-rw-r--r--src/zenserver-test/function-tests.cpp4
-rw-r--r--src/zenserver-test/hub-tests.cpp6
-rw-r--r--src/zenserver-test/projectstore-tests.cpp4
-rw-r--r--src/zenserver-test/workspace-tests.cpp4
-rw-r--r--src/zenserver-test/zenserver-test.cpp5
-rw-r--r--src/zenstore/blockstore.cpp4
-rw-r--r--src/zenstore/buildstore/buildstore.cpp4
-rw-r--r--src/zenstore/cache/cachepolicy.cpp5
-rw-r--r--src/zenstore/cache/structuredcachestore.cpp4
-rw-r--r--src/zenstore/cas.cpp4
-rw-r--r--src/zenstore/compactcas.cpp4
-rw-r--r--src/zenstore/filecas.cpp4
-rw-r--r--src/zenstore/gc.cpp4
-rw-r--r--src/zenstore/projectstore.cpp4
-rw-r--r--src/zenstore/workspaces.cpp4
-rw-r--r--src/zentelemetry/otlptrace.cpp4
-rw-r--r--src/zentelemetry/stats.cpp4
-rw-r--r--src/zenutil/config/commandlineoptions.cpp4
-rw-r--r--src/zenutil/rpcrecording.cpp2
-rw-r--r--src/zenutil/wildcard.cpp4
71 files changed, 311 insertions, 23 deletions
diff --git a/src/zencore/base64.cpp b/src/zencore/base64.cpp
index fdf5f2d66..96e121799 100644
--- a/src/zencore/base64.cpp
+++ b/src/zencore/base64.cpp
@@ -180,6 +180,8 @@ template bool Base64::Decode<wchar_t>(const wchar_t* Source, uint32_t Length, ui
using namespace std::string_literals;
+TEST_SUITE_BEGIN("core.base64");
+
TEST_CASE("Base64")
{
auto EncodeString = [](std::string_view Input) -> std::string {
@@ -290,6 +292,8 @@ TEST_CASE("Base64")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/basicfile.cpp b/src/zencore/basicfile.cpp
index bd4d119fb..9dcf7663a 100644
--- a/src/zencore/basicfile.cpp
+++ b/src/zencore/basicfile.cpp
@@ -888,6 +888,8 @@ WriteToTempFile(CompositeBuffer&& Buffer, const std::filesystem::path& Path)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.basicfile");
+
TEST_CASE("BasicFile")
{
ScopedCurrentDirectoryChange _;
@@ -1081,6 +1083,8 @@ TEST_CASE("BasicFileBuffer")
}
}
+TEST_SUITE_END();
+
void
basicfile_forcelink()
{
diff --git a/src/zencore/blake3.cpp b/src/zencore/blake3.cpp
index 054f0d3a0..123918de5 100644
--- a/src/zencore/blake3.cpp
+++ b/src/zencore/blake3.cpp
@@ -200,6 +200,8 @@ BLAKE3Stream::GetHash()
// return text;
// }
+TEST_SUITE_BEGIN("core.blake3");
+
TEST_CASE("BLAKE3")
{
SUBCASE("Basics")
@@ -237,6 +239,8 @@ TEST_CASE("BLAKE3")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/callstack.cpp b/src/zencore/callstack.cpp
index 8aa1111bf..ee0b0625a 100644
--- a/src/zencore/callstack.cpp
+++ b/src/zencore/callstack.cpp
@@ -260,6 +260,8 @@ GetCallstackRaw(void* CaptureBuffer, int FramesToSkip, int FramesToCapture)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.callstack");
+
TEST_CASE("Callstack.Basic")
{
void* Addresses[4];
@@ -272,6 +274,8 @@ TEST_CASE("Callstack.Basic")
}
}
+TEST_SUITE_END();
+
void
callstack_forcelink()
{
diff --git a/src/zencore/compactbinary.cpp b/src/zencore/compactbinary.cpp
index b43cc18f1..9c81305d0 100644
--- a/src/zencore/compactbinary.cpp
+++ b/src/zencore/compactbinary.cpp
@@ -1512,6 +1512,8 @@ uson_forcelink()
{
}
+TEST_SUITE_BEGIN("core.compactbinary");
+
TEST_CASE("guid")
{
using namespace std::literals;
@@ -1704,8 +1706,6 @@ TEST_CASE("uson.datetime")
//////////////////////////////////////////////////////////////////////////
-TEST_SUITE_BEGIN("core.datetime");
-
TEST_CASE("core.datetime.compare")
{
DateTime T1(2000, 12, 13);
@@ -1732,10 +1732,6 @@ TEST_CASE("core.datetime.add")
CHECK(dT + T1 - T2 == dT1);
}
-TEST_SUITE_END();
-
-TEST_SUITE_BEGIN("core.timespan");
-
TEST_CASE("core.timespan.compare")
{
TimeSpan T1(1000);
diff --git a/src/zencore/compactbinarybuilder.cpp b/src/zencore/compactbinarybuilder.cpp
index 63c0b9c5c..a9ba30750 100644
--- a/src/zencore/compactbinarybuilder.cpp
+++ b/src/zencore/compactbinarybuilder.cpp
@@ -710,6 +710,8 @@ usonbuilder_forcelink()
// return "";
// }
+TEST_SUITE_BEGIN("core.compactbinarybuilder");
+
TEST_CASE("usonbuilder.object")
{
using namespace std::literals;
@@ -1530,6 +1532,8 @@ TEST_CASE("usonbuilder.stream")
CHECK(ValidateCompactBinary(Object.GetBuffer(), CbValidateMode::All) == CbValidateError::None);
}
}
+
+TEST_SUITE_END();
#endif
} // namespace zen
diff --git a/src/zencore/compactbinaryjson.cpp b/src/zencore/compactbinaryjson.cpp
index abbec360a..da560a449 100644
--- a/src/zencore/compactbinaryjson.cpp
+++ b/src/zencore/compactbinaryjson.cpp
@@ -654,6 +654,8 @@ cbjson_forcelink()
{
}
+TEST_SUITE_BEGIN("core.compactbinaryjson");
+
TEST_CASE("uson.json")
{
using namespace std::literals;
@@ -872,6 +874,8 @@ TEST_CASE("json.uson")
}
}
+TEST_SUITE_END();
+
#endif // ZEN_WITH_TESTS
} // namespace zen
diff --git a/src/zencore/compactbinarypackage.cpp b/src/zencore/compactbinarypackage.cpp
index ffe64f2e9..56a292ca6 100644
--- a/src/zencore/compactbinarypackage.cpp
+++ b/src/zencore/compactbinarypackage.cpp
@@ -805,6 +805,8 @@ usonpackage_forcelink()
{
}
+TEST_SUITE_BEGIN("core.compactbinarypackage");
+
TEST_CASE("usonpackage")
{
using namespace std::literals;
@@ -1343,6 +1345,8 @@ TEST_CASE("usonpackage.invalidpackage")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/compactbinaryvalidation.cpp b/src/zencore/compactbinaryvalidation.cpp
index d7292f405..3e78f8ef1 100644
--- a/src/zencore/compactbinaryvalidation.cpp
+++ b/src/zencore/compactbinaryvalidation.cpp
@@ -753,10 +753,14 @@ usonvalidation_forcelink()
{
}
+TEST_SUITE_BEGIN("core.compactbinaryvalidation");
+
TEST_CASE("usonvalidation")
{
SUBCASE("Basic") {}
}
+
+TEST_SUITE_END();
#endif
} // namespace zen
diff --git a/src/zencore/compactbinaryyaml.cpp b/src/zencore/compactbinaryyaml.cpp
index b308af418..b7f2c55df 100644
--- a/src/zencore/compactbinaryyaml.cpp
+++ b/src/zencore/compactbinaryyaml.cpp
@@ -412,6 +412,8 @@ cbyaml_forcelink()
{
}
+TEST_SUITE_BEGIN("core.compactbinaryyaml");
+
TEST_CASE("uson.yaml")
{
using namespace std::literals;
@@ -524,6 +526,8 @@ mixed_seq:
)"sv);
}
}
+
+TEST_SUITE_END();
#endif
} // namespace zen
diff --git a/src/zencore/compositebuffer.cpp b/src/zencore/compositebuffer.cpp
index 252ac9045..ed2b16384 100644
--- a/src/zencore/compositebuffer.cpp
+++ b/src/zencore/compositebuffer.cpp
@@ -297,6 +297,9 @@ CompositeBuffer::IterateRange(uint64_t Offset,
}
#if ZEN_WITH_TESTS
+
+TEST_SUITE_BEGIN("core.compositebuffer");
+
TEST_CASE("CompositeBuffer Null")
{
CompositeBuffer Buffer;
@@ -462,6 +465,8 @@ TEST_CASE("CompositeBuffer Composite")
TestIterateRange(8, 0, MakeMemoryView(FlatArray).Mid(8, 0), FlatView2);
}
+TEST_SUITE_END();
+
void
compositebuffer_forcelink()
{
diff --git a/src/zencore/compress.cpp b/src/zencore/compress.cpp
index 25ed0fc46..6aa0adce0 100644
--- a/src/zencore/compress.cpp
+++ b/src/zencore/compress.cpp
@@ -2420,6 +2420,8 @@ private:
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.compress");
+
TEST_CASE("CompressedBuffer")
{
uint8_t Zeroes[1024]{};
@@ -2967,6 +2969,8 @@ TEST_CASE("CompressedBufferReader")
}
}
+TEST_SUITE_END();
+
void
compress_forcelink()
{
diff --git a/src/zencore/crypto.cpp b/src/zencore/crypto.cpp
index 09eebb6ae..049854b42 100644
--- a/src/zencore/crypto.cpp
+++ b/src/zencore/crypto.cpp
@@ -449,6 +449,8 @@ crypto_forcelink()
{
}
+TEST_SUITE_BEGIN("core.crypto");
+
TEST_CASE("crypto.bits")
{
using CryptoBits256Bit = CryptoBits<256>;
@@ -500,6 +502,8 @@ TEST_CASE("crypto.aes")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/filesystem.cpp b/src/zencore/filesystem.cpp
index 03398860b..9885b2ada 100644
--- a/src/zencore/filesystem.cpp
+++ b/src/zencore/filesystem.cpp
@@ -3309,6 +3309,8 @@ filesystem_forcelink()
{
}
+TEST_SUITE_BEGIN("core.filesystem");
+
TEST_CASE("filesystem")
{
using namespace std::filesystem;
@@ -3603,6 +3605,8 @@ TEST_CASE("SharedMemory")
CHECK(!OpenSharedMemory("SharedMemoryTest0", 482, false));
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/include/zencore/testing.h b/src/zencore/include/zencore/testing.h
index 43bdbbffe..8410216c4 100644
--- a/src/zencore/include/zencore/testing.h
+++ b/src/zencore/include/zencore/testing.h
@@ -43,8 +43,9 @@ public:
TestRunner();
~TestRunner();
- int ApplyCommandLine(int argc, char const* const* argv);
- int Run();
+ void SetDefaultSuiteFilter(const char* Pattern);
+ int ApplyCommandLine(int Argc, char const* const* Argv);
+ int Run();
private:
struct Impl;
@@ -59,7 +60,7 @@ private:
return Runner.Run(); \
}()
-int RunTestMain(int argc, char* argv[], const char* traceName, void (*forceLink)());
+int RunTestMain(int Argc, char* Argv[], const char* ExecutableName, void (*ForceLink)());
} // namespace zen::testing
#endif
diff --git a/src/zencore/intmath.cpp b/src/zencore/intmath.cpp
index 32f82b486..fedf76edc 100644
--- a/src/zencore/intmath.cpp
+++ b/src/zencore/intmath.cpp
@@ -19,6 +19,8 @@ intmath_forcelink()
{
}
+TEST_SUITE_BEGIN("core.intmath");
+
TEST_CASE("intmath")
{
CHECK(FloorLog2(0x00) == 0);
@@ -66,6 +68,8 @@ TEST_CASE("intmath")
CHECK(ByteSwap(uint64_t(0x214d'6172'7469'6e21ull)) == 0x216e'6974'7261'4d21ull);
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp
index 1c31d6620..c47c54981 100644
--- a/src/zencore/iobuffer.cpp
+++ b/src/zencore/iobuffer.cpp
@@ -719,6 +719,8 @@ iobuffer_forcelink()
{
}
+TEST_SUITE_BEGIN("core.iobuffer");
+
TEST_CASE("IoBuffer")
{
zen::IoBuffer buffer1;
@@ -756,6 +758,8 @@ TEST_CASE("IoBuffer.mmap")
# endif
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp
index 75c1be42b..35724b07a 100644
--- a/src/zencore/jobqueue.cpp
+++ b/src/zencore/jobqueue.cpp
@@ -460,6 +460,8 @@ jobqueue_forcelink()
{
}
+TEST_SUITE_BEGIN("core.jobqueue");
+
TEST_CASE("JobQueue")
{
std::unique_ptr<JobQueue> Queue(MakeJobQueue(2, "queue"));
@@ -580,6 +582,8 @@ TEST_CASE("JobQueue")
}
JobsLatch.Wait();
}
+
+TEST_SUITE_END();
#endif
} // namespace zen
diff --git a/src/zencore/logging.cpp b/src/zencore/logging.cpp
index e79c4b41c..e960a2729 100644
--- a/src/zencore/logging.cpp
+++ b/src/zencore/logging.cpp
@@ -540,6 +540,8 @@ logging_forcelink()
using namespace std::literals;
+TEST_SUITE_BEGIN("core.logging");
+
TEST_CASE("simple.bread")
{
ExtendableStringBuilder<256> Crumbs;
@@ -588,6 +590,8 @@ TEST_CASE("simple.bread")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/md5.cpp b/src/zencore/md5.cpp
index 4ec145697..3baee91c2 100644
--- a/src/zencore/md5.cpp
+++ b/src/zencore/md5.cpp
@@ -437,6 +437,8 @@ md5_forcelink()
// return md5text;
// }
+TEST_SUITE_BEGIN("core.md5");
+
TEST_CASE("MD5")
{
using namespace std::literals;
@@ -458,6 +460,8 @@ TEST_CASE("MD5")
CHECK(Output.compare(Buffer));
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/memoryview.cpp b/src/zencore/memoryview.cpp
index 1f6a6996c..1654b1766 100644
--- a/src/zencore/memoryview.cpp
+++ b/src/zencore/memoryview.cpp
@@ -18,6 +18,8 @@ namespace zen {
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.memoryview");
+
TEST_CASE("MemoryView")
{
{
@@ -35,6 +37,8 @@ TEST_CASE("MemoryView")
CHECK(MakeMemoryView<float>({1.0f, 1.2f}).GetSize() == 8);
}
+TEST_SUITE_END();
+
void
memory_forcelink()
{
diff --git a/src/zencore/mpscqueue.cpp b/src/zencore/mpscqueue.cpp
index 29c76c3ca..f749f1c90 100644
--- a/src/zencore/mpscqueue.cpp
+++ b/src/zencore/mpscqueue.cpp
@@ -8,6 +8,7 @@
namespace zen {
#if ZEN_WITH_TESTS && 0
+TEST_SUITE_BEGIN("core.mpscqueue");
TEST_CASE("mpsc")
{
MpscQueue<std::string> Queue;
@@ -15,6 +16,7 @@ TEST_CASE("mpsc")
std::optional<std::string> Value = Queue.Dequeue();
CHECK_EQ(Value, "hello");
}
+TEST_SUITE_END();
#endif
void
diff --git a/src/zencore/parallelwork.cpp b/src/zencore/parallelwork.cpp
index d86d5815f..94696f479 100644
--- a/src/zencore/parallelwork.cpp
+++ b/src/zencore/parallelwork.cpp
@@ -157,6 +157,8 @@ ParallelWork::RethrowErrors()
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.parallelwork");
+
TEST_CASE("parallellwork.nowork")
{
std::atomic<bool> AbortFlag;
@@ -255,6 +257,8 @@ TEST_CASE("parallellwork.limitqueue")
Work.Wait();
}
+TEST_SUITE_END();
+
void
parallellwork_forcelink()
{
diff --git a/src/zencore/refcount.cpp b/src/zencore/refcount.cpp
index a6a86ee12..f19afe715 100644
--- a/src/zencore/refcount.cpp
+++ b/src/zencore/refcount.cpp
@@ -33,6 +33,8 @@ refcount_forcelink()
{
}
+TEST_SUITE_BEGIN("core.refcount");
+
TEST_CASE("RefPtr")
{
RefPtr<TestRefClass> Ref;
@@ -60,6 +62,8 @@ TEST_CASE("RefPtr")
CHECK(IsDestroyed == true);
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/sha1.cpp b/src/zencore/sha1.cpp
index 3ee74d7d8..807ae4c30 100644
--- a/src/zencore/sha1.cpp
+++ b/src/zencore/sha1.cpp
@@ -373,6 +373,8 @@ sha1_forcelink()
// return sha1text;
// }
+TEST_SUITE_BEGIN("core.sha1");
+
TEST_CASE("SHA1")
{
uint8_t sha1_empty[20] = {0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55,
@@ -438,6 +440,8 @@ TEST_CASE("SHA1")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/sharedbuffer.cpp b/src/zencore/sharedbuffer.cpp
index 78efb9d42..8dc6d49d8 100644
--- a/src/zencore/sharedbuffer.cpp
+++ b/src/zencore/sharedbuffer.cpp
@@ -152,10 +152,14 @@ sharedbuffer_forcelink()
{
}
+TEST_SUITE_BEGIN("core.sharedbuffer");
+
TEST_CASE("SharedBuffer")
{
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/stream.cpp b/src/zencore/stream.cpp
index a800ce121..de67303a4 100644
--- a/src/zencore/stream.cpp
+++ b/src/zencore/stream.cpp
@@ -79,6 +79,8 @@ BufferReader::Serialize(void* V, int64_t Length)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.stream");
+
TEST_CASE("binary.writer.span")
{
BinaryWriter Writer;
@@ -91,6 +93,8 @@ TEST_CASE("binary.writer.span")
CHECK(memcmp(Result.GetData(), "apa banan", 9) == 0);
}
+TEST_SUITE_END();
+
void
stream_forcelink()
{
diff --git a/src/zencore/string.cpp b/src/zencore/string.cpp
index ab1c7de58..27635a86c 100644
--- a/src/zencore/string.cpp
+++ b/src/zencore/string.cpp
@@ -546,6 +546,8 @@ UrlDecode(std::string_view InUrl)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.string");
+
TEST_CASE("url")
{
using namespace std::literals;
@@ -1222,6 +1224,8 @@ TEST_CASE("string")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
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
diff --git a/src/zencore/uid.cpp b/src/zencore/uid.cpp
index d7636f2ad..971683721 100644
--- a/src/zencore/uid.cpp
+++ b/src/zencore/uid.cpp
@@ -156,6 +156,8 @@ Oid::FromMemory(const void* Ptr)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("core.uid");
+
TEST_CASE("Oid")
{
SUBCASE("Basic")
@@ -185,6 +187,8 @@ TEST_CASE("Oid")
}
}
+TEST_SUITE_END();
+
void
uid_forcelink()
{
diff --git a/src/zencore/workthreadpool.cpp b/src/zencore/workthreadpool.cpp
index cb84bbe06..1cb338c66 100644
--- a/src/zencore/workthreadpool.cpp
+++ b/src/zencore/workthreadpool.cpp
@@ -354,6 +354,8 @@ workthreadpool_forcelink()
using namespace std::literals;
+TEST_SUITE_BEGIN("core.workthreadpool");
+
TEST_CASE("threadpool.basic")
{
WorkerThreadPool Threadpool{1};
@@ -368,6 +370,8 @@ TEST_CASE("threadpool.basic")
CHECK_THROWS(FutureThrow.get());
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zencore/zencore.cpp b/src/zencore/zencore.cpp
index 4ff79edc7..d82474705 100644
--- a/src/zencore/zencore.cpp
+++ b/src/zencore/zencore.cpp
@@ -285,7 +285,7 @@ zencore_forcelinktests()
namespace zen {
-TEST_SUITE_BEGIN("core.assert");
+TEST_SUITE_BEGIN("core.zencore");
TEST_CASE("Assert.Default")
{
diff --git a/src/zenhttp/clients/httpclientcommon.cpp b/src/zenhttp/clients/httpclientcommon.cpp
index c016e1c3c..248ae9d70 100644
--- a/src/zenhttp/clients/httpclientcommon.cpp
+++ b/src/zenhttp/clients/httpclientcommon.cpp
@@ -597,6 +597,8 @@ namespace testutil {
} // namespace testutil
+TEST_SUITE_BEGIN("http.httpclientcommon");
+
TEST_CASE("BufferedReadFileStream")
{
ScopedTemporaryDirectory TmpDir;
@@ -787,5 +789,7 @@ TEST_CASE("MultipartBoundaryParser")
}
}
+TEST_SUITE_END();
+
} // namespace zen
#endif
diff --git a/src/zenhttp/httpclient.cpp b/src/zenhttp/httpclient.cpp
index 1cfddb366..f94c58581 100644
--- a/src/zenhttp/httpclient.cpp
+++ b/src/zenhttp/httpclient.cpp
@@ -430,6 +430,8 @@ MeasureLatency(HttpClient& Client, std::string_view Url)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("http.httpclient");
+
TEST_CASE("responseformat")
{
using namespace std::literals;
@@ -839,6 +841,8 @@ TEST_CASE("httpclient.password")
AsioServer->RequestExit();
}
}
+TEST_SUITE_END();
+
void
httpclient_forcelink()
{
diff --git a/src/zenhttp/httpclient_test.cpp b/src/zenhttp/httpclient_test.cpp
index 91b1a3414..52bf149a7 100644
--- a/src/zenhttp/httpclient_test.cpp
+++ b/src/zenhttp/httpclient_test.cpp
@@ -257,6 +257,8 @@ struct TestServerFixture
//////////////////////////////////////////////////////////////////////////
// Tests
+TEST_SUITE_BEGIN("http.httpclient");
+
TEST_CASE("httpclient.verbs")
{
TestServerFixture Fixture;
@@ -1352,6 +1354,8 @@ TEST_CASE("httpclient.transport-faults-post" * doctest::skip())
}
}
+TEST_SUITE_END();
+
void
httpclient_test_forcelink()
{
diff --git a/src/zenhttp/httpserver.cpp b/src/zenhttp/httpserver.cpp
index 3cefa0ad8..2facd8401 100644
--- a/src/zenhttp/httpserver.cpp
+++ b/src/zenhttp/httpserver.cpp
@@ -1322,6 +1322,8 @@ HandlePackageOffers(HttpService& Service, HttpServerRequest& Request, Ref<IHttpP
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("http.httpserver");
+
TEST_CASE("http.common")
{
using namespace std::literals;
@@ -1540,6 +1542,8 @@ TEST_CASE("http.common")
}
}
+TEST_SUITE_END();
+
void
http_forcelink()
{
diff --git a/src/zenhttp/packageformat.cpp b/src/zenhttp/packageformat.cpp
index 9a80d07c8..cbfe4d889 100644
--- a/src/zenhttp/packageformat.cpp
+++ b/src/zenhttp/packageformat.cpp
@@ -805,6 +805,8 @@ CbPackageReader::Finalize()
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("http.packageformat");
+
TEST_CASE("CbPackage.Serialization")
{
// Make a test package
@@ -926,6 +928,8 @@ TEST_CASE("CbPackage.LocalRef")
Reader.Finalize();
}
+TEST_SUITE_END();
+
void
forcelink_packageformat()
{
diff --git a/src/zenhttp/security/passwordsecurity.cpp b/src/zenhttp/security/passwordsecurity.cpp
index a8fb9c3f5..0e3a743c3 100644
--- a/src/zenhttp/security/passwordsecurity.cpp
+++ b/src/zenhttp/security/passwordsecurity.cpp
@@ -76,6 +76,8 @@ PasswordSecurity::IsAllowed(std::string_view InPassword, std::string_view BaseUr
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("http.passwordsecurity");
+
TEST_CASE("passwordsecurity.allowanything")
{
PasswordSecurity Anything({});
@@ -162,6 +164,9 @@ TEST_CASE("passwordsecurity.conflictingunprotecteduris")
"uri #1 ('/free/access')"));
}
}
+
+TEST_SUITE_END();
+
void
passwordsecurity_forcelink()
{
diff --git a/src/zenhttp/servers/wstest.cpp b/src/zenhttp/servers/wstest.cpp
index 95f8587df..fd023c490 100644
--- a/src/zenhttp/servers/wstest.cpp
+++ b/src/zenhttp/servers/wstest.cpp
@@ -41,6 +41,8 @@ using namespace std::literals;
// Unit tests: WsFrameCodec
//
+TEST_SUITE_BEGIN("http.wstest");
+
TEST_CASE("websocket.framecodec")
{
SUBCASE("ComputeAcceptKey RFC 6455 test vector")
@@ -912,6 +914,8 @@ TEST_CASE("websocket.client")
}
}
+TEST_SUITE_END();
+
void
websocket_forcelink()
{
diff --git a/src/zennet/statsdclient.cpp b/src/zennet/statsdclient.cpp
index a0e8cb6ce..8afa2e835 100644
--- a/src/zennet/statsdclient.cpp
+++ b/src/zennet/statsdclient.cpp
@@ -380,6 +380,8 @@ statsd_forcelink()
{
}
+TEST_SUITE_BEGIN("net.statsdclient");
+
TEST_CASE("zennet.statsd.emit")
{
// auto Client = CreateStatsDaemonClient("localhost", 8125);
@@ -459,6 +461,8 @@ TEST_CASE("zennet.statsd.batch")
}
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zenremotestore/builds/buildmanifest.cpp b/src/zenremotestore/builds/buildmanifest.cpp
index 051436e96..738e4b33b 100644
--- a/src/zenremotestore/builds/buildmanifest.cpp
+++ b/src/zenremotestore/builds/buildmanifest.cpp
@@ -97,6 +97,8 @@ ParseBuildManifest(const std::filesystem::path& ManifestPath)
}
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("remotestore.buildmanifest");
+
TEST_CASE("buildmanifest.unstructured")
{
ScopedTemporaryDirectory Root;
@@ -163,6 +165,8 @@ TEST_CASE("buildmanifest.structured")
CHECK_EQ(Manifest.Parts[1].Files[0].generic_string(), "baz.pdb");
}
+TEST_SUITE_END();
+
void
buildmanifest_forcelink()
{
diff --git a/src/zenremotestore/builds/buildsavedstate.cpp b/src/zenremotestore/builds/buildsavedstate.cpp
index 1d1f4605f..0685bf679 100644
--- a/src/zenremotestore/builds/buildsavedstate.cpp
+++ b/src/zenremotestore/builds/buildsavedstate.cpp
@@ -588,6 +588,8 @@ namespace buildsavestate_test {
}
} // namespace buildsavestate_test
+TEST_SUITE_BEGIN("remotestore.buildsavedstate");
+
TEST_CASE("buildsavestate.BuildsSelection")
{
using namespace buildsavestate_test;
@@ -696,6 +698,8 @@ TEST_CASE("buildsavestate.DownloadedPaths")
}
}
+TEST_SUITE_END();
+
#endif // ZEN_WITH_TESTS
} // namespace zen
diff --git a/src/zenremotestore/builds/buildstorageoperations.cpp b/src/zenremotestore/builds/buildstorageoperations.cpp
index 08a896f37..5deb00707 100644
--- a/src/zenremotestore/builds/buildstorageoperations.cpp
+++ b/src/zenremotestore/builds/buildstorageoperations.cpp
@@ -7641,6 +7641,8 @@ namespace buildstorageoperations_testutils {
} // namespace buildstorageoperations_testutils
+TEST_SUITE_BEGIN("remotestore.buildstorageoperations");
+
TEST_CASE("buildstorageoperations.upload.folder")
{
using namespace buildstorageoperations_testutils;
@@ -7933,6 +7935,8 @@ TEST_CASE("buildstorageoperations.upload.multipart")
}
}
+TEST_SUITE_END();
+
void
buildstorageoperations_forcelink()
{
diff --git a/src/zenremotestore/chunking/chunkblock.cpp b/src/zenremotestore/chunking/chunkblock.cpp
index d203e0292..3a4e6011d 100644
--- a/src/zenremotestore/chunking/chunkblock.cpp
+++ b/src/zenremotestore/chunking/chunkblock.cpp
@@ -1047,6 +1047,8 @@ namespace testutils {
} // namespace testutils
+TEST_SUITE_BEGIN("remotestore.chunkblock");
+
TEST_CASE("chunkblock.block")
{
using namespace std::literals;
@@ -1315,6 +1317,8 @@ TEST_CASE("chunkblock.reuseblocks")
}
}
+TEST_SUITE_END();
+
void
chunkblock_forcelink()
{
diff --git a/src/zenremotestore/chunking/chunkedcontent.cpp b/src/zenremotestore/chunking/chunkedcontent.cpp
index 26d179f14..62c927508 100644
--- a/src/zenremotestore/chunking/chunkedcontent.cpp
+++ b/src/zenremotestore/chunking/chunkedcontent.cpp
@@ -1706,6 +1706,8 @@ namespace chunkedcontent_testutils {
} // namespace chunkedcontent_testutils
+TEST_SUITE_BEGIN("remotestore.chunkedcontent");
+
TEST_CASE("chunkedcontent.DeletePathsFromContent")
{
FastRandom BaseRandom;
@@ -1924,6 +1926,8 @@ TEST_CASE("chunkedcontent.ApplyChunkedContentOverlay")
}
}
+TEST_SUITE_END();
+
#endif // ZEN_WITH_TESTS
} // namespace zen
diff --git a/src/zenremotestore/chunking/chunkedfile.cpp b/src/zenremotestore/chunking/chunkedfile.cpp
index 652110605..633ddfd0d 100644
--- a/src/zenremotestore/chunking/chunkedfile.cpp
+++ b/src/zenremotestore/chunking/chunkedfile.cpp
@@ -211,6 +211,8 @@ ZEN_THIRD_PARTY_INCLUDES_END
namespace zen {
# if 0
+TEST_SUITE_BEGIN("remotestore.chunkedfile");
+
TEST_CASE("chunkedfile.findparams")
{
# if 1
@@ -513,6 +515,8 @@ TEST_CASE("chunkedfile.findparams")
// WorkLatch.CountDown();
// WorkLatch.Wait();
}
+
+TEST_SUITE_END();
# endif // 0
void
diff --git a/src/zenremotestore/chunking/chunkingcache.cpp b/src/zenremotestore/chunking/chunkingcache.cpp
index 7f0a26330..f4e1c7837 100644
--- a/src/zenremotestore/chunking/chunkingcache.cpp
+++ b/src/zenremotestore/chunking/chunkingcache.cpp
@@ -461,6 +461,8 @@ namespace chunkingcache_testutils {
}
} // namespace chunkingcache_testutils
+TEST_SUITE_BEGIN("remotestore.chunkingcache");
+
TEST_CASE("chunkingcache.nullchunkingcache")
{
using namespace chunkingcache_testutils;
@@ -617,6 +619,8 @@ TEST_CASE("chunkingcache.diskchunkingcache")
}
}
+TEST_SUITE_END();
+
void
chunkingcache_forcelink()
{
diff --git a/src/zenremotestore/filesystemutils.cpp b/src/zenremotestore/filesystemutils.cpp
index fa1ce6f78..fdb2143d8 100644
--- a/src/zenremotestore/filesystemutils.cpp
+++ b/src/zenremotestore/filesystemutils.cpp
@@ -637,6 +637,8 @@ namespace {
void GenerateFile(const std::filesystem::path& Path) { BasicFile _(Path, BasicFile::Mode::kTruncate); }
} // namespace
+TEST_SUITE_BEGIN("remotestore.filesystemutils");
+
TEST_CASE("filesystemutils.CleanDirectory")
{
ScopedTemporaryDirectory TmpDir;
@@ -692,6 +694,8 @@ TEST_CASE("filesystemutils.CleanDirectory")
CHECK(!IsFile(TmpDir.Path() / "CantDeleteMe2" / "deleteme"));
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zenserver-test/buildstore-tests.cpp b/src/zenserver-test/buildstore-tests.cpp
index 7cd31db06..cf9b10896 100644
--- a/src/zenserver-test/buildstore-tests.cpp
+++ b/src/zenserver-test/buildstore-tests.cpp
@@ -27,6 +27,8 @@ namespace zen::tests {
using namespace std::literals;
+TEST_SUITE_BEGIN("server.buildstore");
+
TEST_CASE("buildstore.blobs")
{
std::filesystem::path SystemRootPath = TestEnv.CreateNewTestDir();
@@ -700,5 +702,7 @@ TEST_CASE("buildstore.cache")
}
}
+TEST_SUITE_END();
+
} // namespace zen::tests
#endif
diff --git a/src/zenserver-test/cache-tests.cpp b/src/zenserver-test/cache-tests.cpp
index 745a89253..334dd04ab 100644
--- a/src/zenserver-test/cache-tests.cpp
+++ b/src/zenserver-test/cache-tests.cpp
@@ -23,6 +23,8 @@
namespace zen::tests {
+TEST_SUITE_BEGIN("server.cache");
+
TEST_CASE("zcache.basic")
{
using namespace std::literals;
@@ -2663,6 +2665,8 @@ TEST_CASE("zcache.batchoperations")
}
}
+TEST_SUITE_END();
+
} // namespace zen::tests
#endif
diff --git a/src/zenserver-test/cacherequests.cpp b/src/zenserver-test/cacherequests.cpp
index 46339aebb..f5302a359 100644
--- a/src/zenserver-test/cacherequests.cpp
+++ b/src/zenserver-test/cacherequests.cpp
@@ -1037,6 +1037,8 @@ namespace zen { namespace cacherequests {
static CompressedBuffer MakeCompressedBuffer(size_t Size) { return CompressedBuffer::Compress(SharedBuffer(IoBuffer(Size))); };
+ TEST_SUITE_BEGIN("server.cacherequests");
+
TEST_CASE("cacherequests.put.cache.records")
{
PutCacheRecordsRequest EmptyRequest;
@@ -1458,5 +1460,7 @@ namespace zen { namespace cacherequests {
"!default!",
Invalid));
}
+
+ TEST_SUITE_END();
#endif
}} // namespace zen::cacherequests
diff --git a/src/zenserver-test/function-tests.cpp b/src/zenserver-test/function-tests.cpp
index 559387fa2..82848c6ad 100644
--- a/src/zenserver-test/function-tests.cpp
+++ b/src/zenserver-test/function-tests.cpp
@@ -16,6 +16,8 @@ namespace zen::tests {
using namespace std::literals;
+TEST_SUITE_BEGIN("server.function");
+
TEST_CASE("function.run")
{
std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
@@ -29,6 +31,8 @@ TEST_CASE("function.run")
Instance.WaitUntilReady();
}
+TEST_SUITE_END();
+
} // namespace zen::tests
#endif
diff --git a/src/zenserver-test/hub-tests.cpp b/src/zenserver-test/hub-tests.cpp
index bd85a5020..11531e30f 100644
--- a/src/zenserver-test/hub-tests.cpp
+++ b/src/zenserver-test/hub-tests.cpp
@@ -24,7 +24,7 @@ namespace zen::tests::hub {
using namespace std::literals;
-TEST_SUITE_BEGIN("hub.lifecycle");
+TEST_SUITE_BEGIN("server.hub");
TEST_CASE("hub.lifecycle.basic")
{
@@ -230,8 +230,6 @@ TEST_CASE("hub.lifecycle.children")
}
}
-TEST_SUITE_END();
-
TEST_CASE("hub.consul.lifecycle" * doctest::skip())
{
zen::consul::ConsulProcess ConsulProc;
@@ -248,5 +246,7 @@ TEST_CASE("hub.consul.lifecycle" * doctest::skip())
ConsulProc.StopConsulAgent();
}
+TEST_SUITE_END();
+
} // namespace zen::tests::hub
#endif
diff --git a/src/zenserver-test/projectstore-tests.cpp b/src/zenserver-test/projectstore-tests.cpp
index 487832405..c73910aaa 100644
--- a/src/zenserver-test/projectstore-tests.cpp
+++ b/src/zenserver-test/projectstore-tests.cpp
@@ -27,6 +27,8 @@ namespace zen::tests {
using namespace std::literals;
+TEST_SUITE_BEGIN("server.projectstore");
+
TEST_CASE("project.basic")
{
using namespace std::literals;
@@ -1053,6 +1055,8 @@ TEST_CASE("project.rpcappendop")
}
}
+TEST_SUITE_END();
+
} // namespace zen::tests
#endif
diff --git a/src/zenserver-test/workspace-tests.cpp b/src/zenserver-test/workspace-tests.cpp
index aedadf0c3..655f28872 100644
--- a/src/zenserver-test/workspace-tests.cpp
+++ b/src/zenserver-test/workspace-tests.cpp
@@ -73,6 +73,8 @@ GenerateFolderContent2(const std::filesystem::path& RootPath)
return Result;
}
+TEST_SUITE_BEGIN("server.workspace");
+
TEST_CASE("workspaces.create")
{
using namespace std::literals;
@@ -537,5 +539,7 @@ TEST_CASE("workspaces.share")
CHECK(Client.Get(fmt::format("/ws/{}", WorkspaceId)).StatusCode == HttpResponseCode::NotFound);
}
+TEST_SUITE_END();
+
} // namespace zen::tests
#endif
diff --git a/src/zenserver-test/zenserver-test.cpp b/src/zenserver-test/zenserver-test.cpp
index c7ce633d3..bd36d731f 100644
--- a/src/zenserver-test/zenserver-test.cpp
+++ b/src/zenserver-test/zenserver-test.cpp
@@ -123,6 +123,7 @@ main(int argc, char** argv)
ZEN_INFO("Running tests...(base dir: '{}')", TestBaseDir);
zen::testing::TestRunner Runner;
+ Runner.SetDefaultSuiteFilter("server.*");
Runner.ApplyCommandLine(argc, argv);
return Runner.Run();
@@ -130,6 +131,8 @@ main(int argc, char** argv)
namespace zen::tests {
+TEST_SUITE_BEGIN("server.zenserver");
+
TEST_CASE("default.single")
{
std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
@@ -336,6 +339,8 @@ TEST_CASE("http.package")
CHECK_EQ(ResponsePackage, TestPackage);
}
+TEST_SUITE_END();
+
# if 0
TEST_CASE("lifetime.owner")
{
diff --git a/src/zenstore/blockstore.cpp b/src/zenstore/blockstore.cpp
index 3ea91ead6..6197c7f24 100644
--- a/src/zenstore/blockstore.cpp
+++ b/src/zenstore/blockstore.cpp
@@ -1556,6 +1556,8 @@ BlockStore::GetMetaData(uint32_t BlockIndex) const
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.blockstore");
+
TEST_CASE("blockstore.blockstoredisklocation")
{
BlockStoreLocation Zero = BlockStoreLocation{.BlockIndex = 0, .Offset = 0, .Size = 0};
@@ -2427,6 +2429,8 @@ TEST_CASE("blockstore.BlockStoreFileAppender")
}
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/buildstore/buildstore.cpp b/src/zenstore/buildstore/buildstore.cpp
index aa37e75fe..49ed7cdd2 100644
--- a/src/zenstore/buildstore/buildstore.cpp
+++ b/src/zenstore/buildstore/buildstore.cpp
@@ -1372,6 +1372,8 @@ BuildStore::LockState(GcCtx& Ctx)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.buildstore");
+
TEST_CASE("BuildStore.Blobs")
{
ScopedTemporaryDirectory _;
@@ -1821,6 +1823,8 @@ TEST_CASE("BuildStore.SizeLimit")
}
}
+TEST_SUITE_END();
+
void
buildstore_forcelink()
{
diff --git a/src/zenstore/cache/cachepolicy.cpp b/src/zenstore/cache/cachepolicy.cpp
index ca8a95ca1..ce6a14bd9 100644
--- a/src/zenstore/cache/cachepolicy.cpp
+++ b/src/zenstore/cache/cachepolicy.cpp
@@ -284,6 +284,9 @@ CacheRecordPolicyBuilder::Build()
}
#if ZEN_WITH_TESTS
+
+TEST_SUITE_BEGIN("store.cachepolicy");
+
TEST_CASE("cachepolicy")
{
SUBCASE("atomics serialization")
@@ -416,6 +419,8 @@ TEST_CASE("cacherecordpolicy")
CHECK(Loaded.IsNull());
}
}
+
+TEST_SUITE_END();
#endif
void
diff --git a/src/zenstore/cache/structuredcachestore.cpp b/src/zenstore/cache/structuredcachestore.cpp
index d8a5755c5..18023e2d6 100644
--- a/src/zenstore/cache/structuredcachestore.cpp
+++ b/src/zenstore/cache/structuredcachestore.cpp
@@ -1395,6 +1395,8 @@ namespace testutils {
} // namespace testutils
+TEST_SUITE_BEGIN("store.structuredcachestore");
+
TEST_CASE("cachestore.store")
{
ScopedTemporaryDirectory TempDir;
@@ -2744,6 +2746,8 @@ TEST_CASE("cachestore.newgc.basics")
}
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/cas.cpp b/src/zenstore/cas.cpp
index 7402d92d3..f80952322 100644
--- a/src/zenstore/cas.cpp
+++ b/src/zenstore/cas.cpp
@@ -512,6 +512,8 @@ CreateCasStore(GcManager& Gc)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.cas");
+
TEST_CASE("CasStore")
{
ScopedTemporaryDirectory TempDir;
@@ -553,6 +555,8 @@ TEST_CASE("CasStore")
CHECK(Lookup2);
}
+TEST_SUITE_END();
+
void
CAS_forcelink()
{
diff --git a/src/zenstore/compactcas.cpp b/src/zenstore/compactcas.cpp
index 5d8f95c9e..21411df59 100644
--- a/src/zenstore/compactcas.cpp
+++ b/src/zenstore/compactcas.cpp
@@ -1348,6 +1348,8 @@ CasContainerStrategy::OpenContainer(bool IsNewStore)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.compactcas");
+
TEST_CASE("compactcas.hex")
{
uint32_t Value;
@@ -2159,6 +2161,8 @@ TEST_CASE("compactcas.iteratechunks")
}
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/filecas.cpp b/src/zenstore/filecas.cpp
index 31b3a68c4..295451818 100644
--- a/src/zenstore/filecas.cpp
+++ b/src/zenstore/filecas.cpp
@@ -1496,6 +1496,8 @@ FileCasStrategy::CreateReferencePruner(GcCtx& Ctx, GcReferenceStoreStats&)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.filecas");
+
TEST_CASE("cas.chunk.mismatch")
{
}
@@ -1793,6 +1795,8 @@ TEST_CASE("cas.file.move")
# endif
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp
index c3bdc59f0..b3450b805 100644
--- a/src/zenstore/gc.cpp
+++ b/src/zenstore/gc.cpp
@@ -3049,6 +3049,8 @@ GcScheduler::CollectGarbage(const GcClock::TimePoint& CacheExpireTime,
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.gc");
+
TEST_CASE("gc.diskusagewindow")
{
DiskUsageWindow Stats;
@@ -3380,6 +3382,8 @@ TEST_CASE("gc.attachmentrange")
CHECK(AttachmentRangeMax == IoHash::Max);
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/projectstore.cpp b/src/zenstore/projectstore.cpp
index 1ab2b317a..217336eec 100644
--- a/src/zenstore/projectstore.cpp
+++ b/src/zenstore/projectstore.cpp
@@ -6802,6 +6802,8 @@ namespace testutils {
} // namespace testutils
+TEST_SUITE_BEGIN("store.projectstore");
+
TEST_CASE("project.opkeys")
{
using namespace std::literals;
@@ -8473,6 +8475,8 @@ TEST_CASE("project.store.iterateoplog")
}
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zenstore/workspaces.cpp b/src/zenstore/workspaces.cpp
index f0f975af4..df3cd31ef 100644
--- a/src/zenstore/workspaces.cpp
+++ b/src/zenstore/workspaces.cpp
@@ -1356,6 +1356,8 @@ namespace {
} // namespace
+TEST_SUITE_BEGIN("store.workspaces");
+
TEST_CASE("workspaces.scanfolder")
{
using namespace std::literals;
@@ -1559,6 +1561,8 @@ TEST_CASE("workspace.share.alias")
CHECK(!WS.GetShareAlias("my_share").has_value());
}
+TEST_SUITE_END();
+
#endif
void
diff --git a/src/zentelemetry/otlptrace.cpp b/src/zentelemetry/otlptrace.cpp
index 6a095cfeb..3888717d5 100644
--- a/src/zentelemetry/otlptrace.cpp
+++ b/src/zentelemetry/otlptrace.cpp
@@ -385,6 +385,8 @@ otlptrace_forcelink()
# if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("telemetry.otlptrace");
+
TEST_CASE("otlp.trace")
{
// Enable OTLP tracing for the duration of this test
@@ -409,6 +411,8 @@ TEST_CASE("otlp.trace")
}
}
+TEST_SUITE_END();
+
# endif
} // namespace zen::otel
diff --git a/src/zentelemetry/stats.cpp b/src/zentelemetry/stats.cpp
index c67fa3c66..fcfcaf45e 100644
--- a/src/zentelemetry/stats.cpp
+++ b/src/zentelemetry/stats.cpp
@@ -660,6 +660,8 @@ EmitSnapshot(std::string_view Tag, const RequestStatsSnapshot& Snapshot, CbObjec
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("telemetry.stats");
+
TEST_CASE("Core.Stats.Histogram")
{
Histogram Histo{258};
@@ -819,6 +821,8 @@ TEST_CASE("Meter")
# endif
}
+TEST_SUITE_END();
+
namespace zen {
void
diff --git a/src/zenutil/config/commandlineoptions.cpp b/src/zenutil/config/commandlineoptions.cpp
index 84c718ecc..2344354b3 100644
--- a/src/zenutil/config/commandlineoptions.cpp
+++ b/src/zenutil/config/commandlineoptions.cpp
@@ -194,6 +194,8 @@ commandlineoptions_forcelink()
{
}
+TEST_SUITE_BEGIN("util.commandlineoptions");
+
TEST_CASE("CommandLine")
{
std::vector<std::string> v1 = ParseCommandLine("c:\\my\\exe.exe \"quoted arg\" \"one\",two,\"three\\\"");
@@ -235,5 +237,7 @@ TEST_CASE("CommandLine")
CHECK_EQ(v3Stripped[5], std::string("--build-part-name=win64"));
}
+TEST_SUITE_END();
+
#endif
} // namespace zen
diff --git a/src/zenutil/rpcrecording.cpp b/src/zenutil/rpcrecording.cpp
index 54f27dee7..28a0091cb 100644
--- a/src/zenutil/rpcrecording.cpp
+++ b/src/zenutil/rpcrecording.cpp
@@ -1119,7 +1119,7 @@ rpcrecord_forcelink()
{
}
-TEST_SUITE_BEGIN("rpc.recording");
+TEST_SUITE_BEGIN("util.rpcrecording");
TEST_CASE("rpc.record")
{
diff --git a/src/zenutil/wildcard.cpp b/src/zenutil/wildcard.cpp
index 7a44c0498..7f2f77780 100644
--- a/src/zenutil/wildcard.cpp
+++ b/src/zenutil/wildcard.cpp
@@ -118,6 +118,8 @@ wildcard_forcelink()
{
}
+TEST_SUITE_BEGIN("util.wildcard");
+
TEST_CASE("Wildcard")
{
CHECK(MatchWildcard("*.*", "normal.txt", true));
@@ -151,5 +153,7 @@ TEST_CASE("Wildcard")
CHECK(MatchWildcard("*.d", "dir/path.d", true));
}
+TEST_SUITE_END();
+
#endif
} // namespace zen