File indexing completed on 2024-04-21 15:03:06

0001 /*
0002     SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KConfigGroup>
0008 #include <KService>
0009 #include <KSharedConfig>
0010 #include <QTest>
0011 #include <ktoolinvocation.h>
0012 
0013 class KToolInvocationTest : public QObject
0014 {
0015     Q_OBJECT
0016 private Q_SLOTS:
0017     void initTestCase();
0018     void testTerminalEntryParsing();
0019     void testLegacyEntryParsing();
0020     void testTerminalEntryParsingWithParameters();
0021     void testNoKonsole();
0022 
0023 private:
0024     KConfigGroup general;
0025 };
0026 
0027 void KToolInvocationTest::initTestCase()
0028 {
0029     QStandardPaths::setTestModeEnabled(true);
0030     general = KSharedConfig::openConfig()->group("General");
0031 }
0032 
0033 void KToolInvocationTest::testTerminalEntryParsing()
0034 {
0035     general.writeEntry("TerminalService", QFINDTESTDATA("org.kde.konsole.desktop"));
0036     general.sync();
0037 
0038     const KService::Ptr ptr = KToolInvocation::terminalApplication();
0039     QVERIFY(ptr->isValid());
0040     QCOMPARE(ptr->exec(), QStringLiteral("konsole"));
0041     QCOMPARE(ptr->workingDirectory(), QString());
0042 }
0043 
0044 void KToolInvocationTest::testLegacyEntryParsing()
0045 {
0046     general.deleteGroup();
0047     general.writeEntry("TerminalApplication", "/bin/true");
0048     general.sync();
0049 
0050     const KService::Ptr ptr = KToolInvocation::terminalApplication();
0051     QVERIFY(ptr->isValid());
0052     QCOMPARE(ptr->exec(), QStringLiteral("/bin/true"));
0053     QCOMPARE(ptr->workingDirectory(), QString());
0054 }
0055 
0056 void KToolInvocationTest::testTerminalEntryParsingWithParameters()
0057 {
0058     general.writeEntry("TerminalService", QFINDTESTDATA("org.kde.konsole.desktop"));
0059     general.sync();
0060 
0061     const KService::Ptr ptr = KToolInvocation::terminalApplication(QStringLiteral("/bin/true"), QDir::homePath());
0062     QVERIFY(ptr->isValid());
0063     QCOMPARE(ptr->exec(), QStringLiteral("konsole --noclose -e /bin/true --workdir %1").arg(QDir::homePath()));
0064     QCOMPARE(ptr->workingDirectory(), QDir::homePath());
0065 }
0066 
0067 void KToolInvocationTest::testNoKonsole()
0068 {
0069     general.deleteGroup();
0070     general.sync();
0071 
0072     const KService::Ptr ptr = KToolInvocation::terminalApplication();
0073     QVERIFY(!ptr);
0074 }
0075 
0076 QTEST_MAIN(KToolInvocationTest)
0077 
0078 #include "ktoolinvocation_x11test.moc"