aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2022-04-05 15:58:41 +0200
committerStefan Boberg <[email protected]>2022-04-05 15:58:41 +0200
commitca6516d1b552c5d6959aac3abc84cf3ee02393b6 (patch)
treebe3559834a28603871d79bdb0f6332d9b09349b2
parentFix gc shutdown stalling if shutting down while gc is running (diff)
downloadzen-ca6516d1b552c5d6959aac3abc84cf3ee02393b6.tar.xz
zen-ca6516d1b552c5d6959aac3abc84cf3ee02393b6.zip
Added option to use Catch2 framework for tests
-rw-r--r--xmake.lua1
-rw-r--r--zen/zen.cpp5
-rw-r--r--zencore-test/xmake.lua1
-rw-r--r--zencore-test/zencore-test.cpp5
-rw-r--r--zencore/blake3.cpp16
-rw-r--r--zencore/compactbinary.cpp4
-rw-r--r--zencore/compactbinarybuilder.cpp26
-rw-r--r--zencore/include/zencore/testing.h28
-rw-r--r--zencore/md5.cpp16
-rw-r--r--zencore/sha1.cpp16
-rw-r--r--zencore/xmake.lua1
-rw-r--r--zenserver-test/zenserver-test.cpp76
-rw-r--r--zenserver/zenserver.cpp5
-rw-r--r--zenstore-test/zenstore-test.cpp6
14 files changed, 116 insertions, 90 deletions
diff --git a/xmake.lua b/xmake.lua
index 5ddcf7ce8..e4d795fcf 100644
--- a/xmake.lua
+++ b/xmake.lua
@@ -5,6 +5,7 @@ set_configvar("ZEN_SCHEMA_VERSION", 3) -- changed cas oplog format (p3rl)
add_requires(
"vcpkg::asio",
+ "vcpkg::catch2",
"vcpkg::cpr",
"vcpkg::curl",
"vcpkg::cxxopts",
diff --git a/zen/zen.cpp b/zen/zen.cpp
index 7f547a77a..0a1136da5 100644
--- a/zen/zen.cpp
+++ b/zen/zen.cpp
@@ -21,9 +21,8 @@
#include <zenstore/cas.h>
#if ZEN_WITH_TESTS
-# define DOCTEST_CONFIG_IMPLEMENT
+# define ZEN_TEST_WITH_RUNNER
# include <zencore/testing.h>
-# undef DOCTEST_CONFIG_IMPLEMENT
#endif
#include <gsl/gsl-lite.hpp>
@@ -78,7 +77,7 @@ public:
return GetLastError();
# endif // ZEN_PLATFORM_WINDOWS
- return doctest::Context(argc, argv).run();
+ return ZEN_RUN_TESTS(argc, argv);
}
virtual cxxopts::Options* Options() override { return &m_Options; }
diff --git a/zencore-test/xmake.lua b/zencore-test/xmake.lua
index 74c7e74a7..2556a1399 100644
--- a/zencore-test/xmake.lua
+++ b/zencore-test/xmake.lua
@@ -5,4 +5,5 @@ target("zencore-test")
add_headerfiles("**.h")
add_files("*.cpp")
add_deps("zencore")
+ add_packages("vcpkg::catch2")
add_packages("vcpkg::doctest")
diff --git a/zencore-test/zencore-test.cpp b/zencore-test/zencore-test.cpp
index cd4ce3e0a..37f309be0 100644
--- a/zencore-test/zencore-test.cpp
+++ b/zencore-test/zencore-test.cpp
@@ -5,9 +5,8 @@
#include <zencore/zencore.h>
#if ZEN_WITH_TESTS
-# define DOCTEST_CONFIG_IMPLEMENT
+# define ZEN_TEST_WITH_RUNNER 1
# include <zencore/testing.h>
-# undef DOCTEST_CONFIG_IMPLEMENT
#endif
int
@@ -18,7 +17,7 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
zen::logging::InitializeLogging();
- return doctest::Context(argc, argv).run();
+ return ZEN_RUN_TESTS(argc, argv);
#else
return 0;
#endif
diff --git a/zencore/blake3.cpp b/zencore/blake3.cpp
index b2019d4e2..02d6eb241 100644
--- a/zencore/blake3.cpp
+++ b/zencore/blake3.cpp
@@ -127,14 +127,14 @@ BLAKE3Stream::GetHash()
#if ZEN_WITH_TESTS
-doctest::String
-toString(const BLAKE3& value)
-{
- char text[2 * sizeof(BLAKE3) + 1];
- value.ToHexString(text);
-
- return text;
-}
+// doctest::String
+// toString(const BLAKE3& value)
+// {
+// char text[2 * sizeof(BLAKE3) + 1];
+// value.ToHexString(text);
+
+// return text;
+// }
TEST_CASE("BLAKE3")
{
diff --git a/zencore/compactbinary.cpp b/zencore/compactbinary.cpp
index 31d449c41..05ae32f2b 100644
--- a/zencore/compactbinary.cpp
+++ b/zencore/compactbinary.cpp
@@ -1909,8 +1909,8 @@ TEST_CASE("uson.json")
const double DoubleValue = Json["Double"].number_value();
CHECK(JsonError.empty());
- CHECK(FloatValue == doctest::Approx(ExpectedFloatValue));
- CHECK(DoubleValue == doctest::Approx(ExpectedDoubleValue));
+ CHECK(FloatValue == Approx(ExpectedFloatValue));
+ CHECK(DoubleValue == Approx(ExpectedDoubleValue));
}
SUBCASE("number.nan")
diff --git a/zencore/compactbinarybuilder.cpp b/zencore/compactbinarybuilder.cpp
index 5111504e1..262f4e7d3 100644
--- a/zencore/compactbinarybuilder.cpp
+++ b/zencore/compactbinarybuilder.cpp
@@ -705,19 +705,19 @@ usonbuilder_forcelink()
{
}
-doctest::String
-toString(const DateTime&)
-{
- // TODO:implement
- return "";
-}
-
-doctest::String
-toString(const TimeSpan&)
-{
- // TODO:implement
- return "";
-}
+// doctest::String
+// toString(const DateTime&)
+// {
+// // TODO:implement
+// return "";
+// }
+
+// doctest::String
+// toString(const TimeSpan&)
+// {
+// // TODO:implement
+// return "";
+// }
TEST_CASE("usonbuilder.object")
{
diff --git a/zencore/include/zencore/testing.h b/zencore/include/zencore/testing.h
index 80aebc26e..38c882edb 100644
--- a/zencore/include/zencore/testing.h
+++ b/zencore/include/zencore/testing.h
@@ -4,6 +4,32 @@
#include <zencore/zencore.h>
+#ifdef ZEN_TEST_WITH_RUNNER
+# define CATCH_CONFIG_RUNNER
+# define DOCTEST_CONFIG_IMPLEMENT
+#endif
+
#if ZEN_WITH_TESTS
-# include <doctest/doctest.h>
+# if 1
+# include <catch2/catch.hpp>
+# define SUBCASE(x) SECTION(x)
+# define CHECK_EQ(x, y) CHECK((x) == (y))
+# define CHECK_MESSAGE(x, y) CHECK(x)
+# define ZEN_RUN_TESTS(argC, argV) Catch::Session().run(argC, argV)
+# else
+# include <doctest/doctest.h>
+# define ZEN_RUN_TESTS(argC, argV) doctest::Context(argc, argv).run()
+inline auto
+Approx(auto Value)
+{
+ return doctest::Approx(Value);
+}
+# endif
+#else
+# define ZEN_RUN_TESTS(argC, argV)
+#endif
+
+#ifdef ZEN_TEST_WITH_RUNNER
+# undef CATCH_CONFIG_RUNNER
+# undef DOCTEST_CONFIG_IMPLEMENT
#endif
diff --git a/zencore/md5.cpp b/zencore/md5.cpp
index faece3862..4ec145697 100644
--- a/zencore/md5.cpp
+++ b/zencore/md5.cpp
@@ -428,14 +428,14 @@ md5_forcelink()
{
}
-doctest::String
-toString(const MD5& value)
-{
- char md5text[2 * sizeof(MD5) + 1];
- value.ToHexString(md5text);
-
- return md5text;
-}
+// doctest::String
+// toString(const MD5& value)
+// {
+// char md5text[2 * sizeof(MD5) + 1];
+// value.ToHexString(md5text);
+
+// return md5text;
+// }
TEST_CASE("MD5")
{
diff --git a/zencore/sha1.cpp b/zencore/sha1.cpp
index 66e01f232..3ee74d7d8 100644
--- a/zencore/sha1.cpp
+++ b/zencore/sha1.cpp
@@ -364,14 +364,14 @@ sha1_forcelink()
{
}
-doctest::String
-toString(const SHA1& value)
-{
- char sha1text[2 * sizeof(SHA1) + 1];
- value.ToHexString(sha1text);
-
- return sha1text;
-}
+// doctest::String
+// toString(const SHA1& value)
+// {
+// char sha1text[2 * sizeof(SHA1) + 1];
+// value.ToHexString(sha1text);
+
+// return sha1text;
+// }
TEST_CASE("SHA1")
{
diff --git a/zencore/xmake.lua b/zencore/xmake.lua
index 1044c5025..63e874ac5 100644
--- a/zencore/xmake.lua
+++ b/zencore/xmake.lua
@@ -33,6 +33,7 @@ target('zencore')
"vcpkg::spdlog",
"vcpkg::fmt",
"vcpkg::doctest",
+ "vcpkg::catch2",
"vcpkg::json11",
"vcpkg::lz4",
"vcpkg::mimalloc",
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 5260eaa65..2c5d1d11b 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -65,9 +65,8 @@ ZEN_THIRD_PARTY_INCLUDES_END
//////////////////////////////////////////////////////////////////////////
#if ZEN_WITH_TESTS
-# define DOCTEST_CONFIG_IMPLEMENT
+# define ZEN_TEST_WITH_RUNNER 1
# include <zencore/testing.h>
-# undef DOCTEST_CONFIG_IMPLEMENT
#endif
using namespace std::literals;
@@ -331,7 +330,8 @@ main(int argc, char** argv)
TestEnv.InitializeForTest(ProgramBaseDir, TestBaseDir);
ZEN_INFO("Running tests...(base dir: '{}')", TestBaseDir);
- return doctest::Context(argc, argv).run();
+
+ return ZEN_RUN_TESTS(argc, argv);
}
namespace zen::tests {
@@ -2490,41 +2490,41 @@ private:
zen::BinaryWriter m_MemOut;
};
-TEST_CASE("exec.basic" * doctest::skip(true))
-{
-# if ZEN_WITH_EXEC_SERVICES
- using namespace std::literals;
-
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
-
- const uint16_t PortNumber = 13337;
-
- ZenServerInstance Zen1(TestEnv);
- Zen1.SetTestDir(TestDir);
- Zen1.SpawnServer(PortNumber);
- Zen1.WaitUntilReady();
-
- std::filesystem::path TreePath = TestEnv.GetTestRootDir("test/remote1");
-
- {
- RemoteExecutionRequest RemoteRequest("localhost", PortNumber, TreePath);
- RemoteRequest.Build("zentest-appstub.exe", "");
- RemoteRequest.Prep();
- zen::CbObject Result = RemoteRequest.Exec();
-
- CHECK(Result["exitcode"sv].AsInt32(-1) == 0);
- }
-
- {
- RemoteExecutionRequest RemoteRequest("localhost", PortNumber, TreePath);
- RemoteRequest.Build("zentest-appstub.exe", "-f=1");
- RemoteRequest.Prep();
- zen::CbObject Result = RemoteRequest.Exec();
-
- CHECK(Result["exitcode"sv].AsInt32(-1) == 1);
- }
-# endif // ZEN_WITH_EXEC_SERVICES
-}
+//TEST_CASE(".exec.basic" /* * doctest::skip(true) */)
+//{
+//# if ZEN_WITH_EXEC_SERVICES
+// using namespace std::literals;
+//
+// std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
+//
+// const uint16_t PortNumber = 13337;
+//
+// ZenServerInstance Zen1(TestEnv);
+// Zen1.SetTestDir(TestDir);
+// Zen1.SpawnServer(PortNumber);
+// Zen1.WaitUntilReady();
+//
+// std::filesystem::path TreePath = TestEnv.GetTestRootDir("test/remote1");
+//
+// {
+// RemoteExecutionRequest RemoteRequest("localhost", PortNumber, TreePath);
+// RemoteRequest.Build("zentest-appstub.exe", "");
+// RemoteRequest.Prep();
+// zen::CbObject Result = RemoteRequest.Exec();
+//
+// CHECK(Result["exitcode"sv].AsInt32(-1) == 0);
+// }
+//
+// {
+// RemoteExecutionRequest RemoteRequest("localhost", PortNumber, TreePath);
+// RemoteRequest.Build("zentest-appstub.exe", "-f=1");
+// RemoteRequest.Prep();
+// zen::CbObject Result = RemoteRequest.Exec();
+//
+// CHECK(Result["exitcode"sv].AsInt32(-1) == 1);
+// }
+//# endif // ZEN_WITH_EXEC_SERVICES
+//}
TEST_CASE("mesh.basic")
{
diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp
index 667bcd317..500b57e73 100644
--- a/zenserver/zenserver.cpp
+++ b/zenserver/zenserver.cpp
@@ -50,9 +50,8 @@ ZEN_THIRD_PARTY_INCLUDES_END
// in some shared code into the executable
#if ZEN_WITH_TESTS
-# define DOCTEST_CONFIG_IMPLEMENT
+# define ZEN_TEST_WITH_RUNNER
# include <zencore/testing.h>
-# undef DOCTEST_CONFIG_IMPLEMENT
#endif
//////////////////////////////////////////////////////////////////////////
@@ -1158,7 +1157,7 @@ test_main(int argc, char** argv)
spdlog::set_level(spdlog::level::debug);
- return doctest::Context(argc, argv).run();
+ return ZEN_RUN_TESTS(argc, argv);
}
#endif
diff --git a/zenstore-test/zenstore-test.cpp b/zenstore-test/zenstore-test.cpp
index e6bd92ab9..587cf4a05 100644
--- a/zenstore-test/zenstore-test.cpp
+++ b/zenstore-test/zenstore-test.cpp
@@ -5,9 +5,8 @@
#include <zenstore/zenstore.h>
#if ZEN_WITH_TESTS
-# define DOCTEST_CONFIG_IMPLEMENT
+# define ZEN_TEST_WITH_RUNNER 1
# include <zencore/testing.h>
-# undef DOCTEST_CONFIG_IMPLEMENT
#endif
int
@@ -18,7 +17,8 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
zen::logging::InitializeLogging();
- return doctest::Context(argc, argv).run();
+ return ZEN_RUN_TESTS(argc, argv);
#else
+ return 0;
#endif
}