summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-03-20 12:01:11 +0200
committerKatja Marttila <katja.marttila@qt.io>2020-03-25 06:35:27 +0200
commitab446a093ddda088659e94ab8ba513361ad87643 (patch)
treed23cd88838d82bd31943150709175a1facbaf7b0
parente97b7ef213b21669bad38ed42cbcccd663f39e1b (diff)
Improve unit tests for CLI option installPackages
Task-number: QTIFW-1638 Change-Id: Idd22ee15d01efc0f131c57b5da220de2ae9015b8 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io> Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/Updates.xml153
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentA/1.0.0content.7zbin0 -> 259 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentB/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentC/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentD/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentE/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentF/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0meta.7zbin0 -> 964 bytes
-rw-r--r--tests/auto/installer/cliinterface/settings.qrc15
-rw-r--r--tests/auto/installer/cliinterface/tst_cliinterface.cpp140
17 files changed, 284 insertions, 24 deletions
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/Updates.xml b/tests/auto/installer/cliinterface/data/installPackagesRepository/Updates.xml
new file mode 100644
index 000000000..824a6e21f
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/Updates.xml
@@ -0,0 +1,153 @@
+<Updates>
+ <ApplicationName>{AnyApplication}</ApplicationName>
+ <ApplicationVersion>1.0.0</ApplicationVersion>
+ <Checksum>false</Checksum>
+ <PackageUpdate>
+ <Name>componentA</Name>
+ <DisplayName>Component A</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="299" UncompressedSize="158"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>92b02a74d0886bc1569ff8b3a7edd1f9d828e56c</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentB</Name>
+ <DisplayName>Component B</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>90</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>aedfaef53cdc0f52353a8680009be405fa767811</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentC</Name>
+ <DisplayName>Component C (depends on A and B)</DisplayName>
+ <Description>This component depends on Component A and Component B. Selecting this component for installation also marks Component A and Component B for installation, which in turn marks Component D, because it has an automatic dependency on Component A and Component B.</Description>
+ <Dependencies>componentA, componentB</Dependencies>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>80</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>20b9463a5e06f373182b3c7c4cf879806d429409</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentD</Name>
+ <DisplayName>Component D (auto depends on A and B)</DisplayName>
+ <Description>This component has an automatic dependency on Component A and Component B. If both A and B are marked for installation, this component is also installed.</Description>
+ <AutoDependOn>componentA, componentB</AutoDependOn>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>70</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>99cf24c71559c75dfae9933826ed16051fca6ea1</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentE</Name>
+ <DisplayName>Component E (forced)</DisplayName>
+ <Description>This is a forced component that is always installed.</Description>
+ <ForcedInstallation>true</ForcedInstallation>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>60</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>926bf503ccdff93351744843a95e5e2172cad5ec</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF</Name>
+ <DisplayName>Component F</DisplayName>
+ <Description>This component contains 2 subcomponents.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>40</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>e6443a8b5a5651f63c0604cae6d32431ca617f1a</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent1</Name>
+ <DisplayName>Subcomponent 1</DisplayName>
+ <Description>This component contains 2 leaf components.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>a3bc5dce1c93add30c22e46436396c66b0b51001</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent1.subsubcomponent1</Name>
+ <DisplayName>Subsubcomponent 1</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="289" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>ebe4d69414a1675a7f46887e15d9bffc275b7cc4</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent1.subsubcomponent2</Name>
+ <DisplayName>Subsubcomponent 2</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="289" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>e4379d20320d4c173b2d8e228f5722e3f36e3114</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent2</Name>
+ <DisplayName>Subcomponent 2</DisplayName>
+ <Description>This component contains 2 leaf components.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>6462be25912c490569a7c4f3931d978e78c69dc4</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent2.subsubcomponent1</Name>
+ <DisplayName>Subsubcomponent 1</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="289" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>72b224bc8f3431210834ce6db373fc8d638a3546</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent2.subsubcomponent2</Name>
+ <DisplayName>Subsubcomponent 2</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="289" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>3e2744edaef06af75b3248d5935523a6e2e61551</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentG</Name>
+ <DisplayName>Component G (default, depends on A, dependency added dynamically)</DisplayName>
+ <Description>By default, this component is selected for installation. It depends on component A. Dependency is added from inside component script.</Description>
+ <Default>true</Default>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <Script>installscript.js</Script>
+ <SortingPriority>30</SortingPriority>
+ <UpdateFile OS="Any" CompressedSize="281" UncompressedSize="99"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>8cba36dd589492c28e0d04942b4f8aa0a09f59cc</SHA1>
+ </PackageUpdate>
+</Updates>
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentA/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentA/1.0.0content.7z
new file mode 100644
index 000000000..4ddbe565b
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentA/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentB/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentB/1.0.0content.7z
new file mode 100644
index 000000000..f84ffcdc5
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentB/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentC/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentC/1.0.0content.7z
new file mode 100644
index 000000000..9ad11e06f
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentC/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentD/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentD/1.0.0content.7z
new file mode 100644
index 000000000..0c8c52e31
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentD/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentE/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentE/1.0.0content.7z
new file mode 100644
index 000000000..f5abacf81
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentE/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..3aced680f
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z
new file mode 100644
index 000000000..e5385a163
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..5bc549863
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..da9e9f340
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z
new file mode 100644
index 000000000..d0b013706
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z
new file mode 100644
index 000000000..74ab44033
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF/1.0.0content.7z
new file mode 100644
index 000000000..4a04b1394
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentF/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0content.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0content.7z
new file mode 100644
index 000000000..81fc02052
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0meta.7z b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0meta.7z
new file mode 100644
index 000000000..e5c446f64
--- /dev/null
+++ b/tests/auto/installer/cliinterface/data/installPackagesRepository/componentG/1.0.0meta.7z
Binary files differ
diff --git a/tests/auto/installer/cliinterface/settings.qrc b/tests/auto/installer/cliinterface/settings.qrc
index e95fff4a0..0f4d9814c 100644
--- a/tests/auto/installer/cliinterface/settings.qrc
+++ b/tests/auto/installer/cliinterface/settings.qrc
@@ -4,6 +4,21 @@
<file>data/repository/Updates.xml</file>
<file>data/uninstallableComponentsRepository/Updates.xml</file>
<file>data/components.xml</file>
+ <file>data/installPackagesRepository/Updates.xml</file>
+ <file>data/installPackagesRepository/componentA/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentB/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentC/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentD/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentE/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentG/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentG/1.0.0meta.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z</file>
</qresource>
<qresource prefix="/metadata">
<file>installer-config/config.xml</file>
diff --git a/tests/auto/installer/cliinterface/tst_cliinterface.cpp b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
index 9480732a9..dbec6f633 100644
--- a/tests/auto/installer/cliinterface/tst_cliinterface.cpp
+++ b/tests/auto/installer/cliinterface/tst_cliinterface.cpp
@@ -28,6 +28,7 @@
#include "metadatajob.h"
#include "settings.h"
+#include "init.h"
#include <binarycontent.h>
#include <component.h>
@@ -54,69 +55,96 @@ private:
QTest::ignoreMessage(QtDebugMsg, "Id: AB");
}
+ void verifyInstallerResources(const QString &componentName, const QString &fileName)
+ {
+ QDir dir(m_installDir + QDir::separator() + "installerResources" + QDir::separator() + componentName);
+ QVERIFY(dir.exists());
+ QFileInfo fileInfo;
+ fileInfo.setFile(dir, fileName);
+ QVERIFY(fileInfo.exists());
+ }
+
+ void verifyFileExistence(const QStringList &fileList)
+ {
+ foreach (const QString &file, fileList) {
+ QVERIFY(QFileInfo::exists(m_installDir + QDir::separator() + file));
+ }
+ QDir dir(m_installDir);
+ QCOMPARE(dir.entryList(QStringList() << "*.*", QDir::Files).count(), fileList.count());
+ }
+
+ PackageManagerCore &initPackagemanager(const QString &repository)
+ {
+ PackageManagerCore *core = new PackageManagerCore(BinaryContent::MagicInstallerMarker, QList<OperationBlob> ());
+ QSet<Repository> repoList;
+ Repository repo = Repository::fromUserInput(repository);
+ repoList.insert(repo);
+ core->settings().setDefaultRepositories(repoList);
+
+ m_installDir = QInstaller::generateTemporaryFileName();
+ QDir().mkpath(m_installDir);
+ core->setValue(scTargetDir, m_installDir);
+ return *core;
+ }
+
private slots:
void testListAvailablePackages()
{
QString loggingRules = (QLatin1String("ifw.* = false\n"
"ifw.package.name = true\n"));
- Settings settings = Settings::fromFileAndPrefix(":///data/config.xml", ":///data");
- const QList<OperationBlob> ops;
QTest::ignoreMessage(QtDebugMsg, "Operations sanity check succeeded.");
- PackageManagerCore *core = new PackageManagerCore(BinaryContent::MagicInstallerMarker, ops);
- QSet<Repository> repoList;
- Repository repo = Repository::fromUserInput(":///data/repository");
- repoList.insert(repo);
- core->settings().setDefaultRepositories(repoList);
+ PackageManagerCore &core = initPackagemanager(":///data/repository");
QLoggingCategory::setFilterRules(loggingRules);
setIgnoreMessage();
- core->listAvailablePackages(QLatin1String("."));
+ core.listAvailablePackages(QLatin1String("."));
QTest::ignoreMessage(QtDebugMsg, "Id: A");
QTest::ignoreMessage(QtDebugMsg, "Id: AB");
- core->listAvailablePackages(QLatin1String("A"));
+ core.listAvailablePackages(QLatin1String("A"));
QTest::ignoreMessage(QtDebugMsg, "Id: A");
QTest::ignoreMessage(QtDebugMsg, "Id: AB");
- core->listAvailablePackages(QLatin1String("A.*"));
+ core.listAvailablePackages(QLatin1String("A.*"));
QTest::ignoreMessage(QtDebugMsg, "Id: B");
- core->listAvailablePackages(QLatin1String("^B"));
+ core.listAvailablePackages(QLatin1String("^B"));
QTest::ignoreMessage(QtDebugMsg, "Id: B");
- core->listAvailablePackages(QLatin1String("^B.*"));
+ core.listAvailablePackages(QLatin1String("^B.*"));
QTest::ignoreMessage(QtDebugMsg, "Id: C");
- core->listAvailablePackages(QLatin1String("^C"));
+ core.listAvailablePackages(QLatin1String("^C"));
}
- void testInstallPackages()
+ void testInstallPackageFails()
{
QString loggingRules = (QLatin1String("ifw.* = false\n"
"ifw.installer.installlog = true\n"));
- PackageManagerCore *core = new PackageManagerCore(BinaryContent::MagicInstallerMarker, QList<OperationBlob> ());
- QLoggingCategory::setFilterRules(loggingRules);
- QSet<Repository> repoList;
- Repository repo = Repository::fromUserInput(":///data/uninstallableComponentsRepository");
- repoList.insert(repo);
- core->settings().setDefaultRepositories(repoList);
+ PackageManagerCore &core = initPackagemanager(":///data/uninstallableComponentsRepository");
+
+ QLoggingCategory::setFilterRules(loggingRules);
+ QTest::ignoreMessage(QtDebugMsg, "\"Preparing meta information download...\"");
QTest::ignoreMessage(QtDebugMsg, "Cannot install component A. Component is installed only as automatic dependency to autoDep.");
- core->installSelectedComponentsSilently(QStringList() << QLatin1String("A"));
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("A"));
+ QTest::ignoreMessage(QtDebugMsg, "\"Preparing meta information download...\"");
QTest::ignoreMessage(QtDebugMsg, "Cannot install component AB. Component is not checkable meaning you have to select one of the subcomponents.");
- core->installSelectedComponentsSilently(QStringList() << QLatin1String("AB"));
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("AB"));
+ QTest::ignoreMessage(QtDebugMsg, "\"Preparing meta information download...\"");
QTest::ignoreMessage(QtDebugMsg, "Cannot install B. Component is virtual.");
- core->installSelectedComponentsSilently(QStringList() << QLatin1String("B"));
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("B"));
+ QTest::ignoreMessage(QtDebugMsg, "\"Preparing meta information download...\"");
QTest::ignoreMessage(QtDebugMsg, "Cannot install MissingComponent. Component not found.");
- core->installSelectedComponentsSilently(QStringList() << QLatin1String("MissingComponent"));
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("MissingComponent"));
}
void testListInstalledPackages()
@@ -137,9 +165,73 @@ private slots:
QTest::ignoreMessage(QtDebugMsg, "Id: B");
core.listInstalledPackages();
QDir dir(testDirectory);
+ QVERIFY(dir.removeRecursively());
+ }
+
+ void testInstallPackageSilently()
+ {
+ QInstaller::init(); //This will eat debug output
+ PackageManagerCore &core = initPackagemanager(":///data/installPackagesRepository");
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("componentA"));
+ verifyInstallerResources("componentA", "1.0.0content.txt");
+ verifyInstallerResources("componentE", "1.0.0content.txt"); //ForcedInstall
+ verifyInstallerResources("componentG", "1.0.0content.txt"); //Depends on componentA
+ verifyFileExistence(QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt");
+ }
+
+ void testInstallWithDependencySilently()
+ {
+ QInstaller::init(); //This will eat debug output
+ PackageManagerCore &core = initPackagemanager(":///data/installPackagesRepository");
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("componentC"));
+ verifyInstallerResources("componentA", "1.0.0content.txt"); //Dependency for componentC
+ verifyInstallerResources("componentB", "1.0.0content.txt"); //Dependency for componentC
+ verifyInstallerResources("componentE", "1.0.0content.txt"); //ForcedInstall
+ verifyInstallerResources("componentG", "1.0.0content.txt"); //Depends on componentA
+ verifyInstallerResources("componentD", "1.0.0content.txt"); //Autodepend on componentA and componentB
+ verifyFileExistence(QStringList() << "components.xml" << "installcontentC.txt"
+ << "installcontent.txt" << "installcontentA.txt" << "installcontentB.txt"
+ << "installcontentD.txt"<< "installcontentE.txt" << "installcontentG.txt");
+ }
+
+ void testInstallSubcomponentSilently()
+ {
+ QInstaller::init(); //This will eat debug output
+ PackageManagerCore &core = initPackagemanager(":///data/installPackagesRepository");
+ core.installSelectedComponentsSilently(QStringList() << QLatin1String("componentF.subcomponent2.subsubcomponent2"));
+ verifyInstallerResources("componentF.subcomponent2.subsubcomponent2", "1.0.0content.txt");
+ verifyInstallerResources("componentF.subcomponent2", "1.0.0content.txt");
+ verifyInstallerResources("componentF", "1.0.0content.txt");
+ verifyInstallerResources("componentA", "1.0.0content.txt"); //Dependency for componentG
+ verifyInstallerResources("componentE", "1.0.0content.txt"); //ForcedInstall
+ verifyInstallerResources("componentG", "1.0.0content.txt"); //Default install
+ verifyFileExistence(QStringList() << "components.xml" << "installcontentF.txt"
+ << "installcontentF_2.txt" << "installcontentF_2_2.txt"
+ << "installcontent.txt" << "installcontentA.txt"
+ << "installcontentE.txt" << "installcontentG.txt");
+ }
+
+ void testInstallDefaultPackagesSilently()
+ {
+ QInstaller::init(); //This will eat debug output
+ PackageManagerCore &core = initPackagemanager(":///data/installPackagesRepository");
+ core.installDefaultComponentsSilently();
+ verifyInstallerResources("componentA", "1.0.0content.txt"); //Dependency for componentG
+ verifyInstallerResources("componentE", "1.0.0content.txt"); //ForcedInstall
+ verifyInstallerResources("componentG", "1.0.0content.txt"); //Default
+ verifyFileExistence(QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt");
+ }
+ void cleanup()
+ {
+ QDir dir(m_installDir);
QVERIFY(dir.removeRecursively());
}
+
+private:
+ QString m_installDir;
};