kcmutils/Add-test-for-a-normal-KCM-with-desktop-file.patch

314 lines
12 KiB
Diff
Raw Normal View History

From b1f56973ea194f69a5c8040ebdc500e23ef01f28 Mon Sep 17 00:00:00 2001
From: David Faure <faure@kde.org>
Date: Fri, 22 May 2020 12:47:00 +0200
Subject: Add test for a "normal" KCM with desktop file
---
autotests/CMakeLists.txt | 1 +
autotests/desktopfilekcm/CMakeLists.txt | 6 ++
autotests/desktopfilekcm/kcmtest.cpp | 32 +++++++
autotests/desktopfilekcm/kcmtest.desktop | 149 +++++++++++++++++++++++++++++++
autotests/desktopfilekcm/kcmtest.h | 29 ++++++
autotests/kcmoduleinfotest.cpp | 20 +++++
6 files changed, 237 insertions(+)
create mode 100644 autotests/desktopfilekcm/CMakeLists.txt
create mode 100644 autotests/desktopfilekcm/kcmtest.cpp
create mode 100644 autotests/desktopfilekcm/kcmtest.desktop
create mode 100644 autotests/desktopfilekcm/kcmtest.h
diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
index 358ca4e..35ce99d 100644
--- a/autotests/CMakeLists.txt
+++ b/autotests/CMakeLists.txt
@@ -7,3 +7,4 @@ ecm_add_tests(
)
add_subdirectory(jsonplugin)
+add_subdirectory(desktopfilekcm)
diff --git a/autotests/desktopfilekcm/CMakeLists.txt b/autotests/desktopfilekcm/CMakeLists.txt
new file mode 100644
index 0000000..eb01930
--- /dev/null
+++ b/autotests/desktopfilekcm/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_library(kcmtest MODULE kcmtest.cpp)
+
+kcoreaddons_desktop_to_json(kcmtest kcmtest.desktop)
+
+target_link_libraries(kcmtest KF5::CoreAddons)
+
diff --git a/autotests/desktopfilekcm/kcmtest.cpp b/autotests/desktopfilekcm/kcmtest.cpp
new file mode 100644
index 0000000..574adb4
--- /dev/null
+++ b/autotests/desktopfilekcm/kcmtest.cpp
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2020 David Faure <faure@kde.org>
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2 of the License or ( at
+ your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ act as a proxy as in section 14 of the GPLv3 ), any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "kcmtest.h"
+#include <kpluginfactory.h>
+
+KCMTest::KCMTest(QObject *parent, const QVariantList &args)
+ : QObject(parent)
+{
+ Q_UNUSED(args)
+}
+
+K_PLUGIN_FACTORY_WITH_JSON(kcmtestfactory, "kcmtest.json", registerPlugin<KCMTest>();)
+
+#include "kcmtest.moc"
diff --git a/autotests/desktopfilekcm/kcmtest.desktop b/autotests/desktopfilekcm/kcmtest.desktop
new file mode 100644
index 0000000..7d97fe0
--- /dev/null
+++ b/autotests/desktopfilekcm/kcmtest.desktop
@@ -0,0 +1,149 @@
+[Desktop Entry]
+Exec=kcmshell5 kcmkded
+Icon=preferences-system-session-services
+Type=Service
+X-KDE-ServiceTypes=KCModule
+
+X-KDE-Library=kcm_kded
+X-KDE-ParentApp=kcontrol
+
+X-KDE-System-Settings-Parent-Category=session
+X-KDE-Weight=50
+X-DocPath=kcontrol/kded/index.html
+
+Name=Background Services
+Name[ar]=خدمات الخلفيّة
+Name[ast]=Servicios en segundu planu
+Name[bs]=Pozadinski servisi
+Name[ca]=Serveis en segon pla
+Name[ca@valencia]=Serveis en segon pla
+Name[cs]=Služby na pozadí
+Name[da]=Baggrundstjenester
+Name[de]=Hintergrunddienste
+Name[el]=Υπηρεσίες παρασκηνίου
+Name[en_GB]=Background Services
+Name[es]=Servicios en segundo plano
+Name[et]=Taustateenused
+Name[eu]=Atzeko planoko zerbitzuak
+Name[fi]=Taustapalvelut
+Name[fr]=Services d'arrière plan
+Name[gl]=Servizos en segundo plano
+Name[he]=שירותי רקע
+Name[hu]=Háttérszolgáltatások
+Name[ia]=Servicios de fundo (in background)
+Name[id]=Layanan Latarbelakang
+Name[is]=Bakgrunnsþjónustur
+Name[it]=Servizi in background
+Name[ko]=배경 서비스
+Name[lt]=Foninės tarnybos
+Name[nb]=Bakgrunnstjenester
+Name[nds]=Achtergrunddeensten
+Name[nl]=Achtergrondservices
+Name[nn]=Bakgrunnstenester
+Name[pa]=ਬੈਕਗਰਾਊਂਡ ਸੇਵਾਵਾਂ
+Name[pl]=Usługi w tle
+Name[pt]=Serviços de Segundo Plano
+Name[pt_BR]=Serviços de segundo plano
+Name[ru]=Управление службами
+Name[sk]=Služby pozadia
+Name[sl]=Storitve v ozadju
+Name[sr]=Позадински сервиси
+Name[sr@ijekavian]=Позадински сервиси
+Name[sr@ijekavianlatin]=Pozadinski servisi
+Name[sr@latin]=Pozadinski servisi
+Name[sv]=Bakgrundstjänster
+Name[tr]=Arkaplan Servisleri
+Name[uk]=Фонові служби
+Name[x-test]=xxBackground Servicesxx
+Name[zh_CN]=后台服务
+Name[zh_TW]=背景服務
+Comment=Configure background services
+Comment[ast]=Configura los servicios en segundu planu
+Comment[ca]=Configura els serveis en segon pla
+Comment[cs]=Nastavit služby na pozadí
+Comment[de]=Hintergrunddienste einrichten
+Comment[en_GB]=Configure background services
+Comment[es]=Configurar los servicios en segundo plano
+Comment[et]=Taustateenuste seadistamine
+Comment[eu]=Konfiguratu atzeko planoko zerbitzuak
+Comment[fi]=Taustapalveluasetukset
+Comment[fr]=Configurer les services d'arrière plan
+Comment[ia]=Configura servicios de fundo
+Comment[id]=Konfigurasikan layanan latarbelakang
+Comment[it]=Configura i servizi in background
+Comment[ko]=배경 서비스 설정
+Comment[lt]=Konfigūruoti fonines tarnybas
+Comment[nl]=Achtergrondservices configureren
+Comment[nn]=Set opp bakgrunnstenester
+Comment[pt]=Configurar os serviços de segundo plano
+Comment[pt_BR]=Configurar os serviços de segundo plano
+Comment[ru]=Настройка служб KDE
+Comment[sk]=Nastaviť služby na pozadí
+Comment[sl]=Nastavi storitve v ozadju
+Comment[sv]=Anpassa bakgrundstjänster
+Comment[uk]=Налаштування фонових служб
+Comment[x-test]=xxConfigure background servicesxx
+Comment[zh_CN]=配置后台服务
+Comment[zh_TW]=設定背景服務
+X-KDE-Keywords=KDED,Daemon,Services
+X-KDE-Keywords[ast]=KDED,Degorriu,Servicios
+X-KDE-Keywords[bg]=KDED,Daemon,Services,Услуги
+X-KDE-Keywords[bn]=KDED,Daemon,Services
+X-KDE-Keywords[bs]=KDED,Daemon,Services,demon,usluge
+X-KDE-Keywords[ca]=KDED,Dimoni,Serveis
+X-KDE-Keywords[ca@valencia]=KDED,Dimoni,Serveis
+X-KDE-Keywords[cs]=KDED,Démon,Služby
+X-KDE-Keywords[da]=KDED,dæmon,tjenester
+X-KDE-Keywords[de]=KDED,Dienst,Services,Dienste
+X-KDE-Keywords[el]=KDED,Daemon,Services
+X-KDE-Keywords[en_GB]=KDED,Daemon,Services
+X-KDE-Keywords[eo]=KDED,Demono,Servoj
+X-KDE-Keywords[es]=KDED,Demonio,Servicios
+X-KDE-Keywords[et]=KDED,deemon,teenused
+X-KDE-Keywords[eu]=KDED,daemon-a,zerbitzuak
+X-KDE-Keywords[fa]=KDED,Daemon,Services
+X-KDE-Keywords[fi]=KDED,Palvelu,Taustaprosessi,Palvelin,Palvelut
+X-KDE-Keywords[fr]=KDED, démon, services
+X-KDE-Keywords[ga]=KDED,Deamhan,Seirbhísí
+X-KDE-Keywords[gl]=KDED,servizo,servizos
+X-KDE-Keywords[gu]=KDED,ડેમન,સેવાઓ
+X-KDE-Keywords[he]=KDED,Daemon,Services,שירותים
+X-KDE-Keywords[hi]=KDED,डेमन सेवाएँ
+X-KDE-Keywords[hu]=KDED,Démon,Szolgáltatások
+X-KDE-Keywords[ia]=KDED,Daemon,Servicios
+X-KDE-Keywords[id]=KDED,Daemon,Layanan
+X-KDE-Keywords[is]=KDED,Þjónusta,Þjónustur
+X-KDE-Keywords[it]=KDED,demone,servizi
+X-KDE-Keywords[kk]=KDED,Daemon,Services
+X-KDE-Keywords[km]=KDED ដេមិន សេវាកម្ម
+X-KDE-Keywords[ko]=KDED,Daemon,Services,데몬,서비스
+X-KDE-Keywords[lt]=KDED,tarnyba,paslaugos
+X-KDE-Keywords[lv]=KDED,dēmons,servisi
+X-KDE-Keywords[mr]=केडीईD, डीमन, सेवा
+X-KDE-Keywords[nb]=KDED,Daemon,Tjenester
+X-KDE-Keywords[nds]=KDED,Dämoon,Deensten
+X-KDE-Keywords[nl]=KDED,daemon,services
+X-KDE-Keywords[nn]=KDED,daemon,tenester,tenester
+X-KDE-Keywords[pa]=KDED,ਡੈਮਨ,ਸਰਵਿਸਾਂ
+X-KDE-Keywords[pl]=KDED,Demon,Usługi
+X-KDE-Keywords[pt]=KDED,Servidor,Serviços
+X-KDE-Keywords[pt_BR]=KDED,Servidor,Serviços
+X-KDE-Keywords[ro]=KDED,Servicii,Demon
+X-KDE-Keywords[ru]=KDED,Daemon,Services,фоновая служба,демон,служба
+X-KDE-Keywords[sk]=KDED,Démon,Služby
+X-KDE-Keywords[sl]=KDED,ozadnji program,storitve
+X-KDE-Keywords[sr]=KDED,Daemon,Services,КДЕД,демон,сервис
+X-KDE-Keywords[sr@ijekavian]=KDED,Daemon,Services,КДЕД,демон,сервис
+X-KDE-Keywords[sr@ijekavianlatin]=KDED,Daemon,Services,KDED,demon,servis
+X-KDE-Keywords[sr@latin]=KDED,Daemon,Services,KDED,demon,servis
+X-KDE-Keywords[sv]=KDED,Demon,Tjänster
+X-KDE-Keywords[tr]=KDED,Servis,Servisler
+X-KDE-Keywords[ug]=KDED،Daemon، مۇلازىمەتلەر
+X-KDE-Keywords[uk]=KDED,Daemon,Services,служба,служби,фонова служба,фонові служби
+X-KDE-Keywords[vi]=KDED,Trình nền,Dịch vụ, Daemon,Services
+X-KDE-Keywords[wa]=KDED,Démon,Demon,Siervices
+X-KDE-Keywords[x-test]=xxKDEDxx,xxDaemonxx,xxServicesxx
+X-KDE-Keywords[zh_CN]=KDED,Daemon,Services,服务,后台进程
+X-KDE-Keywords[zh_TW]=KDED,Daemon,Services
+
+Categories=Qt;KDE;X-KDE-settings-components;
diff --git a/autotests/desktopfilekcm/kcmtest.h b/autotests/desktopfilekcm/kcmtest.h
new file mode 100644
index 0000000..84a34f1
--- /dev/null
+++ b/autotests/desktopfilekcm/kcmtest.h
@@ -0,0 +1,29 @@
+/*
+ Copyright (c) 2020 David Faure <faure@kde.org>
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2 of the License or ( at
+ your option ) version 3 or, at the discretion of KDE e.V. ( which shall
+ act as a proxy as in section 14 of the GPLv3 ), any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <QObject>
+#include <QVariantList>
+
+class KCMTest : public QObject
+{
+ Q_OBJECT
+public:
+ explicit KCMTest(QObject* parent, const QVariantList& foo = QVariantList());
+};
diff --git a/autotests/kcmoduleinfotest.cpp b/autotests/kcmoduleinfotest.cpp
index 48c271d..8b2dbae 100644
--- a/autotests/kcmoduleinfotest.cpp
+++ b/autotests/kcmoduleinfotest.cpp
@@ -32,6 +32,7 @@ class KCModuleInfoTest : public QObject
private Q_SLOTS:
void testExternalApp();
void testFakeKCM();
+ void testDesktopFileKCM();
};
void KCModuleInfoTest::testExternalApp()
@@ -58,11 +59,30 @@ void KCModuleInfoTest::testFakeKCM()
// THEN
QCOMPARE(info.pluginInfo().name(), QStringLiteral("Test"));
QCOMPARE(QFileInfo(info.library()).fileName(), QStringLiteral("jsonplugin.so"));
+ QCOMPARE(QFileInfo(info.fileName()).fileName(), QStringLiteral("jsonplugin.so"));
QCOMPARE(info.icon(), QStringLiteral("view-pim-mail"));
QCOMPARE(info.comment(), QStringLiteral("Test plugin"));
QCOMPARE(info.docPath(), QStringLiteral("doc/path"));
QVERIFY(!info.service());
}
+void KCModuleInfoTest::testDesktopFileKCM()
+{
+ const QString desktopFile = QFINDTESTDATA("desktopfilekcm/kcmtest.desktop");
+ QVERIFY(!desktopFile.isEmpty());
+
+ // WHEN
+ KCModuleInfo info(desktopFile);
+
+ // THEN
+ QVERIFY(info.service());
+ QVERIFY(!info.pluginInfo().isValid());
+ QCOMPARE(QFileInfo(info.library()).fileName(), QStringLiteral("kcm_kded"));
+ QCOMPARE(QFileInfo(info.fileName()).fileName(), QStringLiteral("kcmtest.desktop"));
+ QCOMPARE(info.icon(), QStringLiteral("preferences-system-session-services"));
+ QCOMPARE(info.comment(), QStringLiteral("Configure background services"));
+ QCOMPARE(info.docPath(), QStringLiteral("kcontrol/kded/index.html"));
+}
+
QTEST_MAIN(KCModuleInfoTest)
#include "kcmoduleinfotest.moc"
--
cgit v1.1