From 85271fcf268d8ed5d1c7e93d1af2c13888fe12ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E9=A3=8E=E9=80=8D=E9=81=A5=E6=B8=B8?= Date: Mon, 24 Aug 2026 21:00:03 +0800 Subject: [PATCH] test(plugins): cover load failure lifecycle --- test/plugins.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/plugins.cpp diff --git a/test/plugins.cpp b/test/plugins.cpp new file mode 100644 index 00000000..65351b3d --- /dev/null +++ b/test/plugins.cpp @@ -0,0 +1,40 @@ +#include "zeroerr/assert.h" +#include "zeroerr/unittest.h" + +#include "plugins/Plugins.h" + +#include + +using eve::plugins::Plugins; + +TEST_CASE("plugins.load.rejectsEmptyPath") { + Plugins plugins; + CHECK_THROWS((plugins.load(""), false)); + CHECK_EQ(plugins.isLoaded(""), false); +} + +TEST_CASE("plugins.load.rejectsMissingLibrary") { + Plugins plugins; + const std::string missing = "evengine-plugin-that-does-not-exist.dll"; + CHECK_THROWS((plugins.load(missing), false)); + CHECK_EQ(plugins.isLoaded(missing), false); +} + +TEST_CASE("plugins.load.closesLibraryWithoutEntrypoint") { + Plugins plugins; +#if defined(_WIN32) + const std::string library = "kernel32.dll"; +#elif defined(__APPLE__) + const std::string library = "/usr/lib/libSystem.B.dylib"; +#else + const std::string library = "libm.so.6"; +#endif + CHECK_THROWS((plugins.load(library), false)); + CHECK_EQ(plugins.isLoaded(library), false); + CHECK_EQ(plugins.unload(library), false); +} + +TEST_CASE("plugins.unload.unknownPathIsNoop") { + Plugins plugins; + CHECK_EQ(plugins.unload("not-loaded"), false); +}