1 /*
2 SPDX-FileCopyrightText: 2008 Andreas Pakulat <apaku@gmx.de>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7 #include "test_plugincontroller.h"
8
9 #include "testfilepaths.h"
10 #include "plugins/nonguiinterface.h"
11
12 #include <QSignalSpy>
13 #include <QTest>
14
15 #include <tests/autotestshell.h>
16 #include <tests/testcore.h>
17
18 #include "../core.h"
19 #include "../plugincontroller.h"
20
21 using namespace KDevelop;
22
initTestCase()23 void TestPluginController::initTestCase()
24 {
25 qApp->addLibraryPath(QStringLiteral(TEST_PLUGIN_DIR));
26
27 AutoTestShell::init({QStringLiteral("test_nonguiinterface")});
28 TestCore::initialize( Core::NoUi );
29 m_pluginCtrl = Core::self()->pluginControllerInternal();
30 }
31
cleanupTestCase()32 void TestPluginController::cleanupTestCase()
33 {
34 TestCore::shutdown();
35 }
36
pluginInfo()37 void TestPluginController::pluginInfo()
38 {
39 IPlugin* plugin = m_pluginCtrl->loadPlugin(QStringLiteral("test_nonguiinterface"));
40 QVERIFY(plugin);
41 KPluginMetaData pluginInfo = m_pluginCtrl->pluginInfo(plugin);
42 QCOMPARE(pluginInfo.pluginId(), QStringLiteral("test_nonguiinterface"));
43 }
44
loadUnloadPlugin()45 void TestPluginController::loadUnloadPlugin()
46 {
47 QSignalSpy spy(m_pluginCtrl, SIGNAL(pluginLoaded(KDevelop::IPlugin*)));
48 QSignalSpy spyloading(m_pluginCtrl, SIGNAL(loadingPlugin(QString)));
49 QVERIFY(spy.isValid());
50 QVERIFY(spyloading.isValid());
51 m_pluginCtrl->loadPlugin(QStringLiteral("test_nonguiinterface"));
52 QVERIFY( m_pluginCtrl->plugin(QStringLiteral("test_nonguiinterface")) );
53
54 QCOMPARE(spy.size(), 1);
55 QCOMPARE(spyloading.size(), 1);
56
57 QList<QVariant> args = spyloading.takeFirst();
58 QCOMPARE( args.at(0).toString(), QStringLiteral("test_nonguiinterface") );
59
60 QSignalSpy spy2(m_pluginCtrl, SIGNAL(pluginUnloaded(KDevelop::IPlugin*)) );
61 QSignalSpy spy3(m_pluginCtrl, SIGNAL(unloadingPlugin(KDevelop::IPlugin*)) );
62 QVERIFY(spy2.isValid());
63 QVERIFY(spy3.isValid());
64 m_pluginCtrl->unloadPlugin(QStringLiteral("test_nonguiinterface"));
65 QVERIFY( !m_pluginCtrl->plugin(QStringLiteral("test_nonguiinterface")) );
66
67 QCOMPARE(spy2.size(), 1);
68 QCOMPARE(spy3.size(), 1);
69 }
70
loadFromExtension()71 void TestPluginController::loadFromExtension()
72 {
73 IPlugin* plugin = m_pluginCtrl->pluginForExtension( QStringLiteral("org.kdevelop.ITestNonGuiInterface") );
74 QVERIFY( plugin );
75 QVERIFY( plugin->inherits("org.kdevelop.ITestNonGuiInterface") );
76 QVERIFY( plugin->extension<ITestNonGuiInterface>());
77 }
78
benchPluginForExtension()79 void TestPluginController::benchPluginForExtension()
80 {
81 QBENCHMARK {
82 IPlugin* plugin = m_pluginCtrl->pluginForExtension( QStringLiteral("org.kdevelop.ITestNonGuiInterface") );
83 QVERIFY( plugin );
84 }
85 }
86
87 QTEST_MAIN( TestPluginController)
88