File indexing completed on 2024-06-23 05:29:36
0001 /* 0002 SPDX-FileCopyrightText: 2023 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 #include <QFileInfo> 0006 #include <QObject> 0007 #include <QProcess> 0008 #include <QStandardPaths> 0009 #include <QTest> 0010 #include <QTextStream> 0011 0012 bool fileContainsLine(const QString &fileName, const QString &line) 0013 { 0014 QFile file(fileName); 0015 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { 0016 return false; 0017 } 0018 0019 QTextStream in(&file); 0020 while (!in.atEnd()) { 0021 if (in.readLine() == line) { 0022 return true; 0023 } 0024 } 0025 0026 return false; 0027 } 0028 0029 class PluginInstallerRcTest : public QObject 0030 { 0031 Q_OBJECT 0032 private Q_SLOTS: 0033 void initTestCase() 0034 { 0035 QStandardPaths::setTestModeEnabled(true); 0036 qputenv("PLUGININSTALLER_TEST_MODE", "true"); 0037 } 0038 void testInstall() 0039 { 0040 const QString executable = QFINDTESTDATA("krunner-plugininstaller"); 0041 QProcess installProcess; 0042 installProcess.start(executable, {"install", QFINDTESTDATA("testplugin"), "--no-confirm"}); 0043 0044 installProcess.waitForFinished(); 0045 qDebug() << installProcess.readAllStandardError(); 0046 QCOMPARE(installProcess.exitCode(), 0); 0047 0048 const QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); 0049 const QString desktopLocation = dataLocation + "/krunner/dbusplugins/org.kde.testplugin.desktop"; 0050 const QString serviceLocation = dataLocation + "/dbus-1/services/org.kde.testplugin.service"; 0051 QVERIFY(QFileInfo::exists(desktopLocation)); 0052 QVERIFY(QFileInfo::exists(serviceLocation)); 0053 QVERIFY(fileContainsLine(desktopLocation, "X-Plasma-DBusRunner-Service=org.kde.testplugin")); 0054 QVERIFY(fileContainsLine(serviceLocation, QLatin1String("Exec=python3 %1/main.py").arg(QFINDTESTDATA("testplugin")))); 0055 0056 QProcess uninstallProcess; 0057 uninstallProcess.start(executable, {"uninstall", QFINDTESTDATA("testplugin")}); 0058 0059 uninstallProcess.waitForFinished(); 0060 qDebug() << uninstallProcess.readAllStandardError(); 0061 QVERIFY(!QFileInfo::exists(desktopLocation)); 0062 QVERIFY(!QFileInfo::exists(serviceLocation)); 0063 } 0064 }; 0065 0066 QTEST_MAIN(PluginInstallerRcTest) 0067 0068 #include "plugininstallerrctest.moc"