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"