summaryrefslogtreecommitdiffstats
path: root/tests/auto/installer/commandlineupdate
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2022-05-12 13:09:09 +0300
committerKatja Marttila <katja.marttila@qt.io>2022-05-13 12:58:17 +0300
commite0371c9d74a3a9c971f5cae807176226158cfdde (patch)
tree55c3f6962ce6392f6f28d295c83f9d0d1b649dca /tests/auto/installer/commandlineupdate
parentbaa236b7ae7bf1178ac21b56c245a5edc936b22e (diff)
Tests: Use data driven tests for commandlineupdate
This change allows more freely to add new test cases as the test cases are now independent on each other. Change-Id: Ia0635cf44b51095ef7be8bd829474233fb075e7a Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'tests/auto/installer/commandlineupdate')
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml4
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7zbin0 -> 259 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/1.0.0content.7zbin0 -> 209 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/Updates.xml163
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7zbin0 -> 241 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7zbin0 -> 249 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7zbin0 -> 257 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7zbin0 -> 959 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7zbin0 -> 225 bytes
-rw-r--r--tests/auto/installer/commandlineupdate/settings.qrc20
-rw-r--r--tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp428
21 files changed, 469 insertions, 146 deletions
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml
index f56888022..5fbfaa5e9 100644
--- a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml
@@ -6,7 +6,7 @@
<Name>componentA</Name>
<DisplayName>Component A</DisplayName>
<Description>This component does not depend on any other component.</Description>
- <Version>2.0.0</Version>
+ <Version>1.0.0</Version>
<ReleaseDate>2015-08-25</ReleaseDate>
<SortingPriority>100</SortingPriority>
<UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
@@ -155,7 +155,7 @@
<Name>componentH</Name>
<DisplayName>Component H. ForcedUpdate</DisplayName>
<Description>Component H. ForcedUpdate</Description>
- <Version>2.0.0</Version>
+ <Version>1.0.0</Version>
<ReleaseDate>2014-08-25</ReleaseDate>
<ForcedUpdate>true</ForcedUpdate>
<DownloadableArchives>content.7z</DownloadableArchives>
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z
new file mode 100644
index 000000000..4ddbe565b
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/1.0.0content.7z
new file mode 100644
index 000000000..e1449ad29
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/Updates.xml b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/Updates.xml
new file mode 100644
index 000000000..f56888022
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/Updates.xml
@@ -0,0 +1,163 @@
+<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>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>43c8fcc544ea6d35fe5180a50d4764dcf9fd7473</SHA1>
+ <Essential>true</Essential>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentB</Name>
+ <DisplayName>Component B</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>90</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>c360591443f4f46c14cd05b0e7f93a105857b563</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>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>80</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>3c5acf95ad15a2ea6e2baaf55dd79053ca439668</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>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>70</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>5b014c99bf083377024f3de42553faad0c69ebbb</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>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>60</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>bf312c4593abaa8f6d18a1504c411e5ec8130860</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF</Name>
+ <DisplayName>Component F</DisplayName>
+ <Description>This component contains 2 subcomponents.</Description>
+ <Version>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>40</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>d8764d228cc32be0959b286cf57a30252082d2dc</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 CompressedSize="281" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>fbdd255c25820331ffea46c9a80905580fb8ad4f</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 CompressedSize="289" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>c96ddbefa66f5a3400e0c2f3a458c0f619d99690</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 CompressedSize="289" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>c88f52f11f22089d7efc3b65394e96ee1656702e</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentF.subcomponent2</Name>
+ <DisplayName>Subcomponent 2</DisplayName>
+ <Description>This component contains 2 leaf components.</Description>
+ <Version>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>57120d69b22e013666b80d3954b1ee65eb37891f</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 CompressedSize="289" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>3844dc1b4805050f34b483661843a8f8a4e97864</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 CompressedSize="289" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>e1d988818cb8fd89e8863b5699b19823e38f0919</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>2.0.0</Version>
+ <ReleaseDate>2015-08-25</ReleaseDate>
+ <Script>installscript.js</Script>
+ <SortingPriority>30</SortingPriority>
+ <UpdateFile CompressedSize="297" UncompressedSize="99" OS="Any"/>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ <SHA1>098b5ecafe8853371fd608acd9b1ccab252ef5df</SHA1>
+ </PackageUpdate>
+ <PackageUpdate>
+ <Name>componentH</Name>
+ <DisplayName>Component H. ForcedUpdate</DisplayName>
+ <Description>Component H. ForcedUpdate</Description>
+ <Version>2.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <ForcedUpdate>true</ForcedUpdate>
+ <DownloadableArchives>content.7z</DownloadableArchives>
+ </PackageUpdate>
+</Updates>
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7z
new file mode 100644
index 000000000..9e947f5f7
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7z
new file mode 100644
index 000000000..08f7ad70d
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7z
new file mode 100644
index 000000000..3cd9e94fe
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7z
new file mode 100644
index 000000000..992b756d2
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7z
new file mode 100644
index 000000000..d6e7562b1
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..b559dd72f
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z
new file mode 100644
index 000000000..a2109e812
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..55655d1d3
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z
new file mode 100644
index 000000000..c469c39a9
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z
new file mode 100644
index 000000000..164348ac9
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7z
new file mode 100644
index 000000000..921c501cd
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7z
new file mode 100644
index 000000000..6973624df
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7z
new file mode 100644
index 000000000..a3d72046e
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7z
new file mode 100644
index 000000000..a34fd36f1
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7z
new file mode 100644
index 000000000..f74b8da68
--- /dev/null
+++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7z
Binary files differ
diff --git a/tests/auto/installer/commandlineupdate/settings.qrc b/tests/auto/installer/commandlineupdate/settings.qrc
index bed0619d8..d398abe30 100644
--- a/tests/auto/installer/commandlineupdate/settings.qrc
+++ b/tests/auto/installer/commandlineupdate/settings.qrc
@@ -18,7 +18,7 @@
<file>data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z</file>
<file>data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/Updates.xml</file>
- <file>data/installPackagesRepositoryUpdate/componentA/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentB/2.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentC/2.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentD/2.0.0content.7z</file>
@@ -26,13 +26,29 @@
<file>data/installPackagesRepositoryUpdate/componentF/2.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentG/2.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentG/2.0.0meta.7z</file>
- <file>data/installPackagesRepositoryUpdate/componentH/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdate/componentH/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent1/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent2/2.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z</file>
<file>data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/Updates.xml</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z</file>
+ <file>data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z</file>
<file>data/repositoryWithDependencyToEssential/Updates.xml</file>
<file>data/repositoryWithDependencyToEssential/componentAutoDependOnA/1.0content.7z</file>
<file>data/repositoryWithDependencyToEssential/componentA/3.0.0content.7z</file>
diff --git a/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp
index 07dad9d31..2aebb1c06 100644
--- a/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp
+++ b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2020 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,12 +37,15 @@
using namespace QInstaller;
+typedef QList<QPair<QString, QString> > ComponentResourceHash;
+typedef QPair<QString, QString> ComponentResource;
+
class tst_CommandLineUpdate : public QObject
{
Q_OBJECT
private:
- void setRepository(const QString &repository)
+ void setRepository(const QString &repository, PackageManagerCore *core)
{
core->reset();
core->cancelMetaInfoJob(); //Call cancel to reset metadata so that update repositories are fetched
@@ -54,168 +57,309 @@ private:
}
private slots:
- void initTestCase()
- {
- m_installDir = QInstaller::generateTemporaryFileName();
- core = PackageManager::getPackageManagerWithInit(m_installDir);
- }
- void testInstallWhenEssentialUpdate()
+ void testUpdate_data()
{
- setRepository(":///data/installPackagesRepository");
- QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList()
- << "componentA"));
- QCOMPARE(PackageManagerCore::Success, core->status());
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" << "installcontent.txt"
- << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt");
- core->commitSessionOperations();
- core->setPackageManager();
- setRepository(":///data/installPackagesRepositoryUpdate");
- QCOMPARE(PackageManagerCore::ForceUpdate, core->installSelectedComponentsSilently(QStringList()
- << "componentB"));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" << "installcontent.txt"
- << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt");
- }
+ QTest::addColumn<QString>("installDir");
+ QTest::addColumn<PackageManagerCore *>("core");
+ QTest::addColumn<QString>("repository");
+ QTest::addColumn<QStringList>("installComponents");
+ QTest::addColumn<PackageManagerCore::Status>("status");
+ QTest::addColumn<ComponentResourceHash>("componentResources");
+ QTest::addColumn<QStringList >("installedFiles");
+ QTest::addColumn<QString>("updateRepository");
+ QTest::addColumn<QStringList>("updateComponents");
+ QTest::addColumn<PackageManagerCore::Status>("updateStatus");
+ QTest::addColumn<ComponentResourceHash>("componentResourcesAfterUpdate");
+ QTest::addColumn<QStringList >("installedFilesAfterUpdate");
+ QTest::addColumn<ComponentResourceHash >("deletedComponentResources");
- void testUpdateEssentialPackageSilently()
- {
- QCOMPARE(PackageManagerCore::EssentialUpdated, core->updateComponentsSilently(QStringList()));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml"
- << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentA", "1.0.0content.txt");
- //As we are using the same core in tests, clean the essentalupdate value
- core->setFoundEssentialUpdate(false);
- }
+ /*********** Update essential packages **********/
+ ComponentResourceHash componentResources;
+ componentResources.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
- void testUpdateEssentialWithAutodependOnSilently()
- {
- setRepository(":///data/repositoryWithDependencyToEssential");
- QCOMPARE(PackageManagerCore::EssentialUpdated, core->updateComponentsSilently(QStringList()));
+ ComponentResourceHash componentResourcesAfterUpdate;
+ componentResourcesAfterUpdate.append(ComponentResource("componentA", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentE", "1.0.0content.txt"));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "3.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentAutoDependOnA", "1.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml"
- << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt"
- << "installContentAutoDependOnA.txt");
+ ComponentResourceHash deletedComponentResources;
+ deletedComponentResources.append(ComponentResource("componentA", "1.0.0content.txt"));
- //As we are using the same core in tests, clean the essentalupdate value
- core->setFoundEssentialUpdate(false);
- }
+ QString installDir = QInstaller::generateTemporaryFileName();
+ PackageManagerCore *core = PackageManager::getPackageManagerWithInit(installDir);
- void testUpdateForceUpdatePackagesSilently()
- {
- setRepository(":///data/installPackagesRepository");
- QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList()
- << "componentH"));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentH", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml"
- << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt"
- << "installContentAutoDependOnA.txt" << "installcontentH.txt");
- core->commitSessionOperations();
+ QTest::newRow("Update essential packages")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList() << "componentA")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt")
+ << ":///data/installPackagesRepositoryUpdateWithEssential"
+ << (QStringList() << "componentB")
+ << PackageManagerCore::EssentialUpdated
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml"
+ << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt")
+ << deletedComponentResources;
- setRepository(":///data/installPackagesRepositoryUpdate");
- QCOMPARE(PackageManagerCore::EssentialUpdated, core->updateComponentsSilently(QStringList()));
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentH", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentH", "2.0.0content.txt");
- //Verify that no other installed components got update
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml"
- << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt"
- << "installContentAutoDependOnA.txt" << "installcontentH_update.txt");
- core->setFoundEssentialUpdate(false);
- }
+ /*********** Update essential with autodependon**********/
+ installDir = QInstaller::generateTemporaryFileName();
+ core = PackageManager::getPackageManagerWithInit(installDir);
+ componentResourcesAfterUpdate.clear();
+ componentResourcesAfterUpdate.append(ComponentResource("componentA", "3.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentAutoDependOnA", "1.0content.txt"));
- void testUpdatePackageSilently()
- {
- setRepository(":///data/installPackagesRepository");
- QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList()
- << "componentB"));
- QCOMPARE(PackageManagerCore::Success, core->status());
-
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "3.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentB", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentD", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentAutoDependOnA", "1.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml"
- << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt"
- << "installcontentB.txt" << "installcontentD.txt"
- << "installContentAutoDependOnA.txt" << "installcontentH_update.txt");
- core->commitSessionOperations();
+ QTest::newRow("Update essential with autodependon")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList() << "componentA")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt")
+ << ":///data/repositoryWithDependencyToEssential"
+ << (QStringList())
+ << PackageManagerCore::EssentialUpdated
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml"
+ << "installcontentA_update.txt" << "installcontentE.txt" << "installcontentG.txt"
+ << "installContentAutoDependOnA.txt")
+ << deletedComponentResources;
- setRepository(":///data/installPackagesRepositoryUpdate");
- QCOMPARE(PackageManagerCore::Success, core->updateComponentsSilently(QStringList()
- << "componentB"));
- // componentD is autodependent and cannot be deselected
- // componentE is a forced component and thus will be updated
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "3.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentB", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentD", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentAutoDependOnA", "1.0content.txt");
-
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentD", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentE", "1.0.0content.txt");
- VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" << "installcontentA_update.txt"
- << "installcontentE_update.txt" << "installcontentG.txt"
- << "installcontentB_update.txt" << "installcontentD_update.txt"
- << "installContentAutoDependOnA.txt" << "installcontentH_update.txt");
- }
- void testUpdateNoUpdatesForSelectedPackage()
- {
- setRepository(":///data/installPackagesRepositoryUpdate");
- // No updates available for component so nothing to do
- QCOMPARE(PackageManagerCore::Canceled, core->updateComponentsSilently(QStringList()
- << "componentInvalid"));
- }
+ /*********** Update force update packages **********/
+ componentResources.clear();
+ componentResources.append(ComponentResource("componentH", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
- void testUpdateTwoPackageSilently()
- {
- setRepository(":///data/installPackagesRepositoryUpdate");
- QCOMPARE(PackageManagerCore::Success, core->updateComponentsSilently(QStringList()
- << "componentB" << "componentG"));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentB", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentG", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentB", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentG", "1.0.0content.txt");
+ installDir = QInstaller::generateTemporaryFileName();
+ core = PackageManager::getPackageManagerWithInit(installDir);
+ componentResourcesAfterUpdate.clear();
+ componentResourcesAfterUpdate.append(ComponentResource("componentH", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentE", "1.0.0content.txt"));
+
+ deletedComponentResources.clear();
+ deletedComponentResources.append(ComponentResource("componentH", "1.0.0content.txt"));
+
+ QTest::newRow("Update force update packages")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList() << "componentH")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt"
+ << "installcontentH.txt")
+ << ":///data/installPackagesRepositoryUpdateWithEssential"
+ << (QStringList())
+ << PackageManagerCore::EssentialUpdated
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml" << "installcontentA_update.txt"
+ << "installcontentE.txt" << "installcontentG.txt"
+ << "installcontentH_update.txt")
+ << deletedComponentResources;
+
+ /*********** Update packages **********/
+ componentResources.clear();
+ componentResources.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentB", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+
+ installDir = QInstaller::generateTemporaryFileName();
+ core = PackageManager::getPackageManagerWithInit(installDir);
+ componentResourcesAfterUpdate.clear();
+ componentResourcesAfterUpdate.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentB", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentD", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentE", "2.0.0content.txt"));
+
+ deletedComponentResources.clear();
+ deletedComponentResources.append(ComponentResource("componentB", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
+
+ QTest::newRow("Update packages")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList() << "componentC" << "componentH")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentB.txt" << "installcontentC.txt" << "installcontentD.txt"
+ << "installcontentE.txt" << "installcontentG.txt" << "installcontentH.txt")
+ << ":///data/installPackagesRepositoryUpdate"
+ << (QStringList())
+ << PackageManagerCore::Success
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml" << "installcontent.txt"
+ << "installcontentA.txt" << "installcontentB_update.txt" << "installcontentC_update.txt" << "installcontentD_update.txt"
+ << "installcontentE_update.txt" << "installcontentG_update.txt" << "installcontentH.txt")
+ << deletedComponentResources;
+
+ /*********** Update two packages **********/
+ componentResources.clear();
+ componentResources.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentB", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentG", "1.0.0content.txt"));
+
+ installDir = QInstaller::generateTemporaryFileName();
+ core = PackageManager::getPackageManagerWithInit(installDir);
+ componentResourcesAfterUpdate.clear();
+ componentResourcesAfterUpdate.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentB", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentD", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentE", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentG", "2.0.0content.txt"));
+
+ deletedComponentResources.clear();
+ deletedComponentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentG", "1.0.0content.txt"));
+
+ QTest::newRow("Update two packages")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList()<< "componentA" << "componentB" << "componentE" << "componentG")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt" << "installcontentA.txt"
+ << "installcontentD.txt" << "installcontentB.txt" << "installcontentE.txt"
+ << "installcontentG.txt")
+ << ":///data/installPackagesRepositoryUpdate"
+ << (QStringList() << "componentE" << "componentG")
+ << PackageManagerCore::Success
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml" << "installcontent.txt" << "installcontentA.txt"
+ << "installcontentD_update.txt" << "installcontentB.txt"
+ << "installcontentE_update.txt" << "installcontentG_update.txt")
+ << deletedComponentResources;
+
+ /*********** Update all packages **********/
+ componentResources.clear();
+ componentResources.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentB", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentC", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent1", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent1.subsubcomponent1", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent1.subsubcomponent2", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent2", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent2.subsubcomponent1", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentF.subcomponent2.subsubcomponent2", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentG", "1.0.0content.txt"));
+ componentResources.append(ComponentResource("componentH", "1.0.0content.txt"));
+
+ installDir = QInstaller::generateTemporaryFileName();
+ core = PackageManager::getPackageManagerWithInit(installDir);
+ componentResourcesAfterUpdate.clear();
+ componentResourcesAfterUpdate.append(ComponentResource("componentA", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentB", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentC", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentD", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentE", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent1", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent1.subsubcomponent1", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent1.subsubcomponent2", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent2", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent2.subsubcomponent1", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentF.subcomponent2.subsubcomponent2", "1.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentG", "2.0.0content.txt"));
+ componentResourcesAfterUpdate.append(ComponentResource("componentH", "1.0.0content.txt"));
+
+ deletedComponentResources.clear();
+ deletedComponentResources.append(ComponentResource("componentB", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentD", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentE", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentF", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentF.subcomponent2", "1.0.0content.txt"));
+ deletedComponentResources.append(ComponentResource("componentG", "1.0.0content.txt"));
+
+ QTest::newRow("Update all packages")
+ << installDir
+ << core
+ << ":///data/installPackagesRepository"
+ << (QStringList() << "componentA" << "componentB" << "componentC" << "componentD" << "componentE"
+ << "componentF" << "componentG" << "componentH")
+ << PackageManagerCore::Success
+ << componentResources
+ << (QStringList() << "components.xml" << "installcontent.txt" << "installcontentA.txt"
+ << "installcontentB.txt" << "installcontentC.txt" << "installcontentD.txt"
+ << "installcontentE.txt" << "installcontentF.txt" << "installcontentF_1.txt" << "installcontentF_1_1.txt"
+ << "installcontentF_1_2.txt" << "installcontentF_2.txt" << "installcontentF_2_1.txt" << "installcontentF_2_2.txt"
+ << "installcontentG.txt" << "installcontentH.txt")
+ << ":///data/installPackagesRepositoryUpdate"
+ << (QStringList())
+ << PackageManagerCore::Success
+ << componentResourcesAfterUpdate
+ << (QStringList() << "components.xml" << "installcontent.txt" << "installcontentA.txt"
+ << "installcontentB_update.txt" << "installcontentC_update.txt" << "installcontentD_update.txt"
+ << "installcontentE_update.txt" << "installcontentF_update.txt" << "installcontentF_1.txt" << "installcontentF_1_1.txt"
+ << "installcontentF_1_2.txt" << "installcontentF_2_update.txt" << "installcontentF_2_1.txt" << "installcontentF_2_2.txt"
+ << "installcontentG_update.txt" << "installcontentH.txt")
+ << deletedComponentResources;
}
- void testUpdateAllPackagesSilently()
+ void testUpdate()
{
- setRepository(":///data/installPackagesRepository");
- QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList()
- << "componentA" << "componentB" << "componentG" << "componentF"));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF.subcomponent1", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF.subcomponent1.subsubcomponent1", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF.subcomponent2", "1.0.0content.txt");
+ QFETCH(QString, installDir);
+ QFETCH(PackageManagerCore *, core);
+ QFETCH(QString, repository);
+ QFETCH(QStringList, installComponents);
+ QFETCH(PackageManagerCore::Status, status);
+ QFETCH(ComponentResourceHash, componentResources);
+ QFETCH(QStringList, installedFiles);
+ QFETCH(QString, updateRepository);
+ QFETCH(QStringList, updateComponents);
+ QFETCH(PackageManagerCore::Status, updateStatus);
+ QFETCH(ComponentResourceHash, componentResourcesAfterUpdate);
+ QFETCH(QStringList, installedFilesAfterUpdate);
+ QFETCH(ComponentResourceHash, deletedComponentResources);
+
+ setRepository(repository, core);
+ QCOMPARE(status, core->installSelectedComponentsSilently(QStringList() << installComponents));
+ for (const ComponentResource &resource : componentResources) {
+ VerifyInstaller::verifyInstallerResources(installDir, resource.first, resource.second);
+ }
+ VerifyInstaller::verifyFileExistence(installDir, installedFiles);
+
core->commitSessionOperations();
+ core->setPackageManager();
+ setRepository(updateRepository, core);
+ QCOMPARE(updateStatus, core->updateComponentsSilently(updateComponents));
- setRepository(":///data/installPackagesRepositoryUpdate");
- QCOMPARE(PackageManagerCore::Success, core->updateComponentsSilently(QStringList()));
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResources(m_installDir, "componentF.subcomponent2", "2.0.0content.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentF", "1.0.0content.txt");
- VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, "componentF.subcomponent2", "1.0.0content.txt");
+ for (const ComponentResource &resource : componentResourcesAfterUpdate) {
+ VerifyInstaller::verifyInstallerResources(installDir, resource.first, resource.second);
+ }
+ for (const ComponentResource &resource : deletedComponentResources) {
+ VerifyInstaller::verifyInstallerResourceFileDeletion(installDir, resource.first, resource.second);
+ }
+ VerifyInstaller::verifyFileExistence(installDir, installedFilesAfterUpdate);
+ delete core;
}
- void cleanupTestCase()
+ void testUpdateNoUpdatesForSelectedPackage()
{
- QDir dir(m_installDir);
- QVERIFY(dir.removeRecursively());
+ QString installDir = QInstaller::generateTemporaryFileName();
+ PackageManagerCore *core = PackageManager::getPackageManagerWithInit(installDir);
+ setRepository(":///data/installPackagesRepositoryUpdate", core);
+ // No updates available for component so nothing to do
+ QCOMPARE(PackageManagerCore::Canceled, core->updateComponentsSilently(QStringList()
+ << "componentInvalid"));
delete core;
}
-
-private:
- QString m_installDir;
- PackageManagerCore *core;
};