From d3021e3cc23b7df322bf9dd7f80df5bbde7cc166 Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Fri, 3 Apr 2020 16:01:25 +0300 Subject: Add CLI test for CreateDesktopEntryOperation Task-number: QTIFW-1723 Change-Id: Ifc77c77a0db560198b04729518346e5438efa6b6 Reviewed-by: Katja Marttila --- .../createdesktopentryoperation.pro | 4 ++ .../data/repository/A/1.0.2-1meta.7z | Bin 0 -> 905 bytes .../data/repository/Updates.xml | 13 +++++ .../createdesktopentryoperation/settings.qrc | 6 ++ .../tst_createdesktopentryoperation.cpp | 61 ++++++++++++++++++++- 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 tests/auto/installer/createdesktopentryoperation/data/repository/A/1.0.2-1meta.7z create mode 100644 tests/auto/installer/createdesktopentryoperation/data/repository/Updates.xml create mode 100644 tests/auto/installer/createdesktopentryoperation/settings.qrc diff --git a/tests/auto/installer/createdesktopentryoperation/createdesktopentryoperation.pro b/tests/auto/installer/createdesktopentryoperation/createdesktopentryoperation.pro index 8ad1b9b26..3c3338140 100644 --- a/tests/auto/installer/createdesktopentryoperation/createdesktopentryoperation.pro +++ b/tests/auto/installer/createdesktopentryoperation/createdesktopentryoperation.pro @@ -4,3 +4,7 @@ QT -= gui QT += testlib SOURCES = tst_createdesktopentryoperation.cpp + +RESOURCES += \ + settings.qrc \ + ..\shared\config.qrc diff --git a/tests/auto/installer/createdesktopentryoperation/data/repository/A/1.0.2-1meta.7z b/tests/auto/installer/createdesktopentryoperation/data/repository/A/1.0.2-1meta.7z new file mode 100644 index 000000000..2905c12be Binary files /dev/null and b/tests/auto/installer/createdesktopentryoperation/data/repository/A/1.0.2-1meta.7z differ diff --git a/tests/auto/installer/createdesktopentryoperation/data/repository/Updates.xml b/tests/auto/installer/createdesktopentryoperation/data/repository/Updates.xml new file mode 100644 index 000000000..77b5a9956 --- /dev/null +++ b/tests/auto/installer/createdesktopentryoperation/data/repository/Updates.xml @@ -0,0 +1,13 @@ + + {AnyApplication} + 1.0.0 + + A + A + Example component A + 1.0.2-1 + 2015-01-01 + true + + + diff --git a/tests/auto/installer/createdesktopentryoperation/settings.qrc b/tests/auto/installer/createdesktopentryoperation/settings.qrc new file mode 100644 index 000000000..d030220ab --- /dev/null +++ b/tests/auto/installer/createdesktopentryoperation/settings.qrc @@ -0,0 +1,6 @@ + + + data/repository/Updates.xml + data/repository/A/1.0.2-1meta.7z + + diff --git a/tests/auto/installer/createdesktopentryoperation/tst_createdesktopentryoperation.cpp b/tests/auto/installer/createdesktopentryoperation/tst_createdesktopentryoperation.cpp index 5c4f27834..55405163a 100644 --- a/tests/auto/installer/createdesktopentryoperation/tst_createdesktopentryoperation.cpp +++ b/tests/auto/installer/createdesktopentryoperation/tst_createdesktopentryoperation.cpp @@ -26,7 +26,14 @@ ** **************************************************************************/ -#include "createdesktopentryoperation.h" +#include + +#include +#include +#include +#include +#include +#include #include #include @@ -102,6 +109,58 @@ private slots: QVERIFY(QFile(filename).remove()); } + void testPerformingFromCLI() + { + QInstaller::init(); //This will eat debug output + PackageManagerCore *core = new PackageManagerCore(BinaryContent::MagicInstallerMarker, QList ()); + core->setAllowedRunningProcesses(QStringList() << QCoreApplication::applicationFilePath()); + QSet repoList; + Repository repo = Repository::fromUserInput(":///data/repository"); + repoList.insert(repo); + core->settings().setDefaultRepositories(repoList); + + QString installDir = QInstaller::generateTemporaryFileName(); + QVERIFY(QDir().mkpath(installDir)); + + core->setValue(scTargetDir, installDir); + core->installDefaultComponentsSilently(); + + CreateDesktopEntryOperation *createDesktopEntryOp = nullptr; + OperationList operations = core->componentByName("A")->operations(); + foreach (Operation *op, operations) { + if (op->name() == QLatin1String("CreateDesktopEntry")) + createDesktopEntryOp = dynamic_cast(op); + } + QVERIFY(createDesktopEntryOp); + + QString entryFileName = createDesktopEntryOp->absoluteFileName(); + QVERIFY(QFileInfo(entryFileName).exists()); + if (QFileInfo(createDesktopEntryOp->arguments().first()).isRelative()) { + QStringList directories = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")) + .split(QLatin1Char(':'), QString::SkipEmptyParts); + // Default path if XDG_DATA_HOME is not set + directories.append(QDir::home().absoluteFilePath(QLatin1String(".local/share"))); + bool validPath = false; + foreach (const QString &dir, directories) { + // Desktop entry should be in one of the expected locations + if (QFileInfo(entryFileName).absolutePath() == QDir(dir).absoluteFilePath("applications")) { + validPath = true; + break; + } + } + QVERIFY(validPath); + } + core->setPackageManager(); + core->commitSessionOperations(); + core->uninstallComponentsSilently(QStringList() << "A"); + QVERIFY2(!QFileInfo(entryFileName).exists(), "Please make sure there " + "does not exist a desktop entry with the same name."); + + QDir dir(installDir); + QVERIFY(dir.removeRecursively()); + core->deleteLater(); + } + private: QString m_desktopEntryContents; }; -- cgit v1.2.3