File indexing completed on 2024-05-12 04:38:20
0001 /* 0002 SPDX-FileCopyrightText: 2008 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "test_plugincontroller.h" 0008 0009 #include "testfilepaths.h" 0010 #include "plugins/nonguiinterface.h" 0011 0012 #include <QSignalSpy> 0013 #include <QTest> 0014 0015 #include <tests/autotestshell.h> 0016 #include <tests/testcore.h> 0017 0018 #include "../core.h" 0019 #include "../plugincontroller.h" 0020 0021 using namespace KDevelop; 0022 0023 void TestPluginController::initTestCase() 0024 { 0025 qApp->addLibraryPath(QStringLiteral(TEST_PLUGIN_DIR)); 0026 0027 AutoTestShell::init({QStringLiteral("test_nonguiinterface")}); 0028 TestCore::initialize( Core::NoUi ); 0029 m_pluginCtrl = Core::self()->pluginControllerInternal(); 0030 } 0031 0032 void TestPluginController::cleanupTestCase() 0033 { 0034 TestCore::shutdown(); 0035 } 0036 0037 void TestPluginController::pluginInfo() 0038 { 0039 IPlugin* plugin = m_pluginCtrl->loadPlugin(QStringLiteral("test_nonguiinterface")); 0040 QVERIFY(plugin); 0041 KPluginMetaData pluginInfo = m_pluginCtrl->pluginInfo(plugin); 0042 QCOMPARE(pluginInfo.pluginId(), QStringLiteral("test_nonguiinterface")); 0043 } 0044 0045 void TestPluginController::loadUnloadPlugin() 0046 { 0047 QSignalSpy spy(m_pluginCtrl, SIGNAL(pluginLoaded(KDevelop::IPlugin*))); 0048 QSignalSpy spyloading(m_pluginCtrl, SIGNAL(loadingPlugin(QString))); 0049 QVERIFY(spy.isValid()); 0050 QVERIFY(spyloading.isValid()); 0051 m_pluginCtrl->loadPlugin(QStringLiteral("test_nonguiinterface")); 0052 QVERIFY( m_pluginCtrl->plugin(QStringLiteral("test_nonguiinterface")) ); 0053 0054 QCOMPARE(spy.size(), 1); 0055 QCOMPARE(spyloading.size(), 1); 0056 0057 QList<QVariant> args = spyloading.takeFirst(); 0058 QCOMPARE( args.at(0).toString(), QStringLiteral("test_nonguiinterface") ); 0059 0060 QSignalSpy spy2(m_pluginCtrl, SIGNAL(pluginUnloaded(KDevelop::IPlugin*)) ); 0061 QSignalSpy spy3(m_pluginCtrl, SIGNAL(unloadingPlugin(KDevelop::IPlugin*)) ); 0062 QVERIFY(spy2.isValid()); 0063 QVERIFY(spy3.isValid()); 0064 m_pluginCtrl->unloadPlugin(QStringLiteral("test_nonguiinterface")); 0065 QVERIFY( !m_pluginCtrl->plugin(QStringLiteral("test_nonguiinterface")) ); 0066 0067 QCOMPARE(spy2.size(), 1); 0068 QCOMPARE(spy3.size(), 1); 0069 } 0070 0071 void TestPluginController::loadFromExtension() 0072 { 0073 IPlugin* plugin = m_pluginCtrl->pluginForExtension( QStringLiteral("org.kdevelop.ITestNonGuiInterface") ); 0074 QVERIFY( plugin ); 0075 QVERIFY( plugin->inherits("org.kdevelop.ITestNonGuiInterface") ); 0076 QVERIFY( plugin->extension<ITestNonGuiInterface>()); 0077 } 0078 0079 void TestPluginController::benchPluginForExtension() 0080 { 0081 QBENCHMARK { 0082 IPlugin* plugin = m_pluginCtrl->pluginForExtension( QStringLiteral("org.kdevelop.ITestNonGuiInterface") ); 0083 QVERIFY( plugin ); 0084 } 0085 } 0086 0087 QTEST_MAIN( TestPluginController) 0088 0089 #include "moc_test_plugincontroller.cpp"