summaryrefslogtreecommitdiff
path: root/src/plugins/test/pluginloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/test/pluginloader.cpp')
-rw-r--r--src/plugins/test/pluginloader.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/plugins/test/pluginloader.cpp b/src/plugins/test/pluginloader.cpp
new file mode 100644
index 00000000..83b30c40
--- /dev/null
+++ b/src/plugins/test/pluginloader.cpp
@@ -0,0 +1,40 @@
+#include <QJsonArray>
+#include <QPluginLoader>
+#include <gtest/gtest.h>
+#include <iostream>
+
+char *pluginPath;
+
+class PluginLoaderTest : public ::testing::Test {
+
+protected:
+ void SetUp() override { loader = new QPluginLoader; }
+ void TearDown() override { delete loader; }
+
+ QPluginLoader *loader = nullptr;
+};
+
+TEST_F(PluginLoaderTest, InterfaceTest)
+{
+ // Ensure plugin loads
+ loader->setFileName(pluginPath);
+ EXPECT_TRUE(loader->load()) << "For plugin: " << pluginPath << '\n' << qUtf8Printable(loader->errorString());
+
+ // Ensure plugin has metadata
+ const auto metadata = loader->metaData()["MetaData"].toObject();
+ EXPECT_TRUE(metadata.contains("name"));
+ EXPECT_FALSE(metadata["name"].toString().isEmpty());
+ EXPECT_TRUE(metadata.contains("schemes"));
+ EXPECT_FALSE(metadata["schemes"].toArray().isEmpty());
+}
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ if (argc != 2) {
+ std::cerr << "Usage: " << argv[0] << " [path to plugin]" << std::endl;
+ return -1;
+ }
+ pluginPath = argv[1];
+ return RUN_ALL_TESTS();
+}