diff --git a/autotests/kservicetest.cpp b/autotests/kservicetest.cpp --- a/autotests/kservicetest.cpp +++ b/autotests/kservicetest.cpp @@ -84,7 +84,6 @@ qDebug() << "Setting locale to fr_FR.utf8 failed"; } - m_hasKde5Konsole = false; eraseProfiles(); if (!KSycoca::isAvailable()) { @@ -222,6 +221,15 @@ mustUpdateKSycoca = true; } + // testapp.desktop + const QString testApp = QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation) + QLatin1String("/org.kde.testapp.desktop"); + if (!QFile::exists(testApp)) { + const QString src = QFINDTESTDATA("org.kde.testapp.desktop"); + QVERIFY(!src.isEmpty()); + QVERIFY(QFile::copy(src, testApp)); + mustUpdateKSycoca = true; + } + if (mustUpdateKSycoca) { // Update ksycoca in ~/.qttest after creating the above runKBuildSycoca(true); @@ -401,6 +409,7 @@ } const KService::List lst = KService::allServices(); QVERIFY(!lst.isEmpty()); + bool foundTestApp = false; for (KService::List::ConstIterator it = lst.begin(); it != lst.end(); ++it) { @@ -421,15 +430,16 @@ const QString menuId = service->menuId(); if (menuId.isEmpty()) { qWarning("%s has an empty menuId!", qPrintable(entryPath)); - } else if (menuId == "org.kde.konsole.desktop") { - m_hasKde5Konsole = true; + } else if (menuId == "org.kde.testapp.desktop") { + foundTestApp = true; } QVERIFY(!menuId.isEmpty()); lookedupService = KService::serviceByMenuId(menuId); QVERIFY(lookedupService); // not null QCOMPARE(lookedupService->menuId(), menuId); } } + QVERIFY(foundTestApp); } // Helper method for all the trader tests @@ -455,40 +465,27 @@ if (!KSycoca::isAvailable()) { QSKIP("ksycoca not available"); } - if (!m_hasKde5Konsole) { - QSKIP("org.kde.konsole.desktop not available"); - } - //KService::Ptr konsole = KService::serviceByMenuId( "org.kde.konsole.desktop" ); - KService::Ptr konsole = KService::serviceByDesktopName(QStringLiteral("org.kde.konsole")); - QVERIFY(konsole); - QCOMPARE(konsole->menuId(), QStringLiteral("org.kde.konsole.desktop")); - //qDebug() << konsole->entryPath(); - QCOMPARE(int(konsole->dbusStartupType()), int(KService::DBusUnique)); + KService::Ptr testapp = KService::serviceByDesktopName(QStringLiteral("org.kde.testapp")); + QVERIFY(testapp); + QCOMPARE(testapp->menuId(), QStringLiteral("org.kde.testapp.desktop")); + //qDebug() << testapp->entryPath(); + QCOMPARE(int(testapp->dbusStartupType()), int(KService::DBusUnique)); } void KServiceTest::testByStorageId() { if (!KSycoca::isAvailable()) { QSKIP("ksycoca not available"); } - if (QStandardPaths::locate(QStandardPaths::ApplicationsLocation, QStringLiteral("org.kde.konsole.desktop")).isEmpty()) { - QSKIP("org.kde.konsole.desktop not available"); - } - QVERIFY(KService::serviceByMenuId(QStringLiteral("org.kde.konsole.desktop"))); - QVERIFY(!KService::serviceByMenuId(QStringLiteral("org.kde.konsole"))); // doesn't work, extension mandatory - QVERIFY(!KService::serviceByMenuId(QStringLiteral("konsole.desktop"))); // doesn't work, full filename mandatory - QVERIFY(KService::serviceByStorageId(QStringLiteral("org.kde.konsole.desktop"))); - QVERIFY(KService::serviceByStorageId("org.kde.konsole")); - - // This one fails here; probably because there are two such files, so this would be too - // ambiguous... According to the testAllServices output, the entryPaths are - // entryPath="/d/kde/inst/kde5/share/applications/org.kde.konsole.desktop" - // entryPath= "/usr/share/applications/org.kde.konsole.desktop" - // - //QVERIFY(KService::serviceByDesktopPath("org.kde.konsole.desktop")); + QVERIFY(!QStandardPaths::locate(QStandardPaths::ApplicationsLocation, QStringLiteral("org.kde.testapp.desktop")).isEmpty()); + QVERIFY(KService::serviceByMenuId(QStringLiteral("org.kde.testapp.desktop"))); + QVERIFY(!KService::serviceByMenuId(QStringLiteral("org.kde.testapp"))); // doesn't work, extension mandatory + QVERIFY(!KService::serviceByMenuId(QStringLiteral("testapp.desktop"))); // doesn't work, full filename mandatory + QVERIFY(KService::serviceByStorageId(QStringLiteral("org.kde.testapp.desktop"))); + QVERIFY(KService::serviceByStorageId("org.kde.testapp")); - QVERIFY(KService::serviceByDesktopName(QStringLiteral("org.kde.konsole"))); - QCOMPARE(KService::serviceByDesktopName(QStringLiteral("org.kde.konsole"))->menuId(), QString("org.kde.konsole.desktop")); + QVERIFY(KService::serviceByDesktopName(QStringLiteral("org.kde.testapp"))); + QCOMPARE(KService::serviceByDesktopName(QStringLiteral("org.kde.testapp"))->menuId(), QString("org.kde.testapp.desktop")); } void KServiceTest::testServiceTypeTraderForReadOnlyPart() @@ -722,18 +719,15 @@ void KServiceTest::testActionsAndDataStream() { - if (QStandardPaths::locate(QStandardPaths::ApplicationsLocation, QStringLiteral("org.kde.konsole.desktop")).isEmpty()) { - QSKIP("org.kde.konsole.desktop not available"); - } - KService::Ptr service = KService::serviceByStorageId(QStringLiteral("org.kde.konsole.desktop")); + KService::Ptr service = KService::serviceByStorageId(QStringLiteral("org.kde.testapp.desktop")); QVERIFY(service); QVERIFY(!service->property(QStringLiteral("Name[fr]"), QVariant::String).isValid()); const QList actions = service->actions(); QCOMPARE(actions.count(), 2); // NewWindow, NewTab const KServiceAction newTabAction = actions.at(1); QCOMPARE(newTabAction.name(), QStringLiteral("NewTab")); QCOMPARE(newTabAction.exec(), QStringLiteral("konsole --new-tab")); - QVERIFY(newTabAction.icon().isEmpty()); + QCOMPARE(newTabAction.icon(), QStringLiteral("tab-new")); QCOMPARE(newTabAction.noDisplay(), false); QVERIFY(!newTabAction.isSeparator()); } diff --git a/autotests/org.kde.testapp.desktop b/autotests/org.kde.testapp.desktop new file mode 100644 --- /dev/null +++ b/autotests/org.kde.testapp.desktop @@ -0,0 +1,334 @@ +[Desktop Entry] +Type=Application +TryExec=konsole +Exec=konsole +Icon=utilities-terminal +Terminal=false +Categories=Qt;KDE;System;TerminalEmulator; +Actions=NewWindow;NewTab; +X-DocPath=konsole/index.html +X-DBUS-StartupType=Unique +StartupNotify=true +X-KDE-AuthorizeAction=shell_access +StartupWMClass=konsole + +Name=Konsole +Name[af]=Konsole +Name[ar]=كونسول +Name[as]=Konsole +Name[ast]=Konsole +Name[be]=Konsole +Name[be@latin]=Konsole +Name[bg]=Konsole +Name[bn]=কনসোল +Name[bn_IN]=Konsole +Name[br]=Konsole +Name[bs]=Konzola +Name[ca]=Konsole +Name[ca@valencia]=Konsole +Name[cs]=Konsole +Name[csb]=Kònsola +Name[cy]=Konsole +Name[da]=Konsole +Name[de]=Konsole +Name[el]=Κονσόλα +Name[en_GB]=Konsole +Name[eo]=Konsole +Name[es]=Konsole +Name[et]=Konsool +Name[eu]=Kontsola +Name[fa]=کنسول +Name[fi]=Konsole +Name[fr]=Konsole +Name[fy]=Konsole +Name[ga]=Konsole +Name[gl]=Konsole +Name[gu]=કોન્સોલ +Name[he]=Konsole +Name[hi]=कंसोल +Name[hne]=कंसोल +Name[hr]=Konsole +Name[hsb]=Konsola +Name[hu]=Konsole +Name[ia]=Konsole +Name[id]=Konsole +Name[is]=Konsole +Name[it]=Konsole +Name[ja]=Konsole +Name[ka]=კონსოლი +Name[kk]=Konsole +Name[km]=កុងសូល +Name[kn]=ಕನ್ಸೋಲ್ +Name[ko]=Konsole +Name[ku]=Konsol +Name[lt]=Konsole +Name[lv]=Konsole +Name[mai]=कंसोल +Name[mk]=Конзола +Name[ml]=കണ്‍സോള്‍ +Name[mr]=कंसोल +Name[ms]=Konsole +Name[nb]=Konsole +Name[nds]=Konsole +Name[ne]=कन्सोल +Name[nl]=Konsole +Name[nn]=Konsoll +Name[or]=କୋଲସୋଲ +Name[pa]=ਕਨਸੋਲ +Name[pl]=Konsola +Name[pt]=Konsole +Name[pt_BR]=Konsole +Name[ro]=Konsolă +Name[ru]=Konsole +Name[se]=Konsolla +Name[si]=කන්සෝල් +Name[sk]=Konsole +Name[sl]=Konsole +Name[sr]=Конзола +Name[sr@ijekavian]=Конзола +Name[sr@ijekavianlatin]=Konsole +Name[sr@latin]=Konsole +Name[sv]=Terminal +Name[ta]=கான்சோல் +Name[te]=కాన్సోల్ +Name[tg]=Консол +Name[th]=คอนโซล-K +Name[tr]=Konsole +Name[ug]=Konsole +Name[uk]=Konsole +Name[uz]=Konsole +Name[uz@cyrillic]=Konsole +Name[vi]=Konsole +Name[wa]=Konsole +Name[xh]=Konsole +Name[x-test]=xxKonsolexx +Name[zh_CN]=Konsole +Name[zh_TW]=Konsole + +GenericName=Terminal +GenericName[af]=Terminaal +GenericName[ar]=طرفيّة +GenericName[as]=টাৰ্মিনেল +GenericName[ast]=Terminal +GenericName[be@latin]=Terminał +GenericName[bg]=Терминал +GenericName[bn]=টার্মিনাল +GenericName[bn_IN]=টার্মিন্যাল +GenericName[bs]=Terminal +GenericName[ca]=Terminal +GenericName[ca@valencia]=Terminal +GenericName[cs]=Terminál +GenericName[csb]=Terminal +GenericName[da]=Terminal +GenericName[de]=Terminal +GenericName[el]=Τερματικό +GenericName[en_GB]=Terminal +GenericName[eo]=Terminalo +GenericName[es]=Terminal +GenericName[et]=Terminal +GenericName[eu]=Terminala +GenericName[fa]=پایانه +GenericName[fi]=Pääteikkuna +GenericName[fr]=Terminal +GenericName[fy]=Terminal +GenericName[ga]=Teirminéal +GenericName[gl]=Terminal +GenericName[gu]=ટર્મિનલ +GenericName[he]=מסוף +GenericName[hi]=टर्मिनल +GenericName[hne]=टर्मिनल +GenericName[hr]=Terminal +GenericName[hsb]=Terminal +GenericName[hu]=Terminál +GenericName[ia]=Terminal +GenericName[id]=Terminal +GenericName[is]=Skjáhermir +GenericName[it]=Terminale +GenericName[ja]=ターミナル +GenericName[ka]=ტერმინალი +GenericName[kk]=Терминал +GenericName[km]=ស្ថានីយ +GenericName[kn]=ಆದೇಶತೆರೆ (ಟರ್ಮಿನಲ್) +GenericName[ko]=터미널 +GenericName[ku]=Termînal +GenericName[lt]=Terminalas +GenericName[lv]=Terminālis +GenericName[mai]=टर्मिनल +GenericName[mk]=Терминал +GenericName[ml]=ടെര്‍മിനല്‍ +GenericName[mr]=टर्मिनल +GenericName[nb]=Terminal +GenericName[nds]=Konsool +GenericName[nl]=Terminal +GenericName[nn]=Terminal +GenericName[or]=ଟର୍ମିନାଲ +GenericName[pa]=ਟਰਮੀਨਲ +GenericName[pl]=Terminal +GenericName[pt]=Terminal +GenericName[pt_BR]=Terminal +GenericName[ro]=Terminal +GenericName[ru]=Терминал +GenericName[se]=Terminal +GenericName[si]=අග්‍රය +GenericName[sk]=Terminál +GenericName[sl]=Terminal +GenericName[sr]=Терминал +GenericName[sr@ijekavian]=Терминал +GenericName[sr@ijekavianlatin]=Terminal +GenericName[sr@latin]=Terminal +GenericName[sv]=Terminal +GenericName[ta]=முனையம் +GenericName[te]=టెర్మినల్ +GenericName[tg]=Терминал +GenericName[th]=เทอร์มินัล +GenericName[tr]=Uçbirim +GenericName[ug]=تېرمىنال +GenericName[uk]=Термінал +GenericName[uz]=Terminal +GenericName[uz@cyrillic]=Терминал +GenericName[wa]=Terminå +GenericName[x-test]=xxTerminalxx +GenericName[zh_CN]=终端 +GenericName[zh_TW]=終端機 + +Comment=Command line access +Comment[ast]=Accesu a la llinia de comandos +Comment[ca]=Accés a la línia d'ordres +Comment[ca@valencia]=Accés a la línia d'ordres +Comment[cs]=Přístup k příkazové řádce +Comment[da]=Kommandolinjetilgang +Comment[de]=Zugriff auf die Befehlszeile +Comment[el]=Πρόσβαση από τη γραμμή εντολών +Comment[en_GB]=Command line access +Comment[es]=Acceso a la línea de órdenes +Comment[et]=Käsurea kasutamine +Comment[eu]=Komando-lerrora sarbidea +Comment[fa]=دسترسی خط فرمان +Comment[fi]=Pääsy komentoriville +Comment[fr]=Ligne de commande +Comment[gl]=Acceso á liña de ordes. +Comment[he]=גישה לשורת הפקודה +Comment[hu]=Parancssori hozzáférés +Comment[ia]=Accesso a linea de commando +Comment[id]=Akses baris perintah +Comment[is]=Aðgangur með skipanalínu +Comment[it]=Accesso alla riga di comando +Comment[ko]=명령행 접근 +Comment[nb]=Tilgang til kommandolinje +Comment[nl]=Toegang tot de opdrachtregel +Comment[nn]=Kommandolinjetilgang +Comment[pl]=Dostęp do wiersza poleceń +Comment[pt]=Acesso à linha de comandos +Comment[pt_BR]=Acesso à linha de comandos +Comment[ru]=Доступ к командной строке +Comment[sk]=Prístup na príkazový riadok +Comment[sl]=Dostop do ukazne vrstice +Comment[sr]=Приступ командној линији +Comment[sr@ijekavian]=Приступ командној линији +Comment[sr@ijekavianlatin]=Pristup komandnoj liniji +Comment[sr@latin]=Pristup komandnoj liniji +Comment[sv]=Åtkomst till kommandorad +Comment[tr]=Komut satırı erişimi +Comment[uk]=Доступ до командного рядка +Comment[x-test]=xxCommand line accessxx +Comment[zh_CN]=命令行访问 +Comment[zh_TW]=指令列 + +[Desktop Action NewWindow] +Name=Open a New Window +Name[ar]=افتح نافذة جديدة +Name[ast]=Abrir nuna ventana nueva +Name[bs]=Otvori u novom prozoru +Name[ca]=Obre una finestra nova +Name[ca@valencia]=Obri una finestra nova +Name[cs]=Otevřít nové okno +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[el]=Άνοιγμα νέου παραθύρου +Name[en_GB]=Open a New Window +Name[es]=Abrir una nueva ventana +Name[et]=Ava uues aknas +Name[eu]=Ireki leiho berri bat +Name[fa]=باز کردن یک پنجره جدید +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir dans une nouvelle fenêtre +Name[gl]=Abrir unha xanela nova +Name[he]=פתח חלון חדש +Name[hu]=Új ablak megnyitása +Name[ia]=Aperi un nove fenestra +Name[id]=Buka Window Baru +Name[is]=Opna nýjan glugga +Name[it]=Apri in una nuova finestra +Name[ko]=새 창 열기 +Name[lt]=Atverti naujame lange +Name[nb]=Åpne et nytt vindu +Name[nds]=En nieg Finster opmaken +Name[nl]=Een nieuw venster openen +Name[nn]=Opna i nytt vindauge +Name[pa]=ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ +Name[pl]=Otwórz nowe okno +Name[pt]=Abrir uma Nova Janela +Name[pt_BR]=Abre uma nova janela +Name[ro]=Deschide o fereastră nouă +Name[ru]=Открыть новое окно +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[sr]=Отвори нови прозор +Name[sr@ijekavian]=Отвори нови прозор +Name[sr@ijekavianlatin]=Otvori novi prozor +Name[sr@latin]=Otvori novi prozor +Name[sv]=Öppna ett nytt fönster +Name[tr]=Yeni Pencere Aç +Name[uk]=Відкрити нове вікно +Name[x-test]=xxOpen a New Windowxx +Name[zh_CN]=打开新窗口 +Name[zh_TW]=開啟新視窗 +Icon=window-new +Exec=konsole + +[Desktop Action NewTab] +Name=Open a New Tab +Name[ast]=Abrir nuna llingüeta nueva +Name[ca]=Obre una pestanya nova +Name[ca@valencia]=Obri una pestanya nova +Name[cs]=Otevřít novou kartu +Name[da]=Åbn et nyt faneblad +Name[de]=Ein neues Unterfenster öffnen +Name[el]=Άνοιγμα νέας καρτέλας +Name[en_GB]=Open a New Tab +Name[es]=Abrir una nueva pestaña +Name[et]=Ava uuel kaardil +Name[eu]=Ireki fitxa berri bat +Name[fa]=باز کردن یک برگه جدید +Name[fi]=Avaa uusi välilehti +Name[fr]=Ouvrir un nouvel onglet +Name[gl]=Abrir un novo separador +Name[he]=פתח כרטיסיה חדשה +Name[hu]=Új lap megnyitása +Name[ia]=Aperi un nove scheda +Name[id]=Buka sebuah Tab Baru +Name[is]=Opna nýjan flipa +Name[it]=Apri in una nuova scheda +Name[ko]=새 탭 열기 +Name[nb]=Åpne en ny fane +Name[nl]=Een nieuw tabblad openen +Name[nn]=Opna ny fane +Name[pa]=ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹੋ +Name[pl]=Otwórz nową kartę +Name[pt]=Abrir uma Nova Página +Name[pt_BR]=Abre uma nova aba +Name[ru]=Открыть новую вкладку +Name[sk]=Otvoriť novú kartu +Name[sl]=Odpri nov zavihek +Name[sr]=Отвори нови језичак +Name[sr@ijekavian]=Отвори нови језичак +Name[sr@ijekavianlatin]=Otvori novi jezičak +Name[sr@latin]=Otvori novi jezičak +Name[sv]=Öppna en ny flik +Name[tr]=Yeni Bir Sekme Aç +Name[uk]=Відкрити нову вкладку +Name[x-test]=xxOpen a New Tabxx +Name[zh_CN]=打开新标签 +Name[zh_TW]=開啟新分頁 +Icon=tab-new +Exec=konsole --new-tab