diff options
Diffstat (limited to 'tests/auto/installer/commandlineupdate')
63 files changed, 1060 insertions, 0 deletions
diff --git a/tests/auto/installer/commandlineupdate/commandlineupdate.pro b/tests/auto/installer/commandlineupdate/commandlineupdate.pro new file mode 100644 index 000000000..543ec8b23 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/commandlineupdate.pro @@ -0,0 +1,9 @@ +include(../../qttest.pri) + +QT += qml + +SOURCES += tst_commandlineupdate.cpp + +RESOURCES += \ + settings.qrc \ + ../shared/config.qrc diff --git a/tests/auto/installer/commandlineupdate/data/config.xml b/tests/auto/installer/commandlineupdate/data/config.xml new file mode 100644 index 000000000..041ce5062 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/config.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Installer> + <Name>Your application</Name> + <Version>1.2.3</Version> + <MaintenanceToolName></MaintenanceToolName> + <MaintenanceToolIniFile></MaintenanceToolIniFile> + <TargetConfigurationFile></TargetConfigurationFile> +</Installer> diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/Updates.xml b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/Updates.xml new file mode 100644 index 000000000..de6e66525 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/Updates.xml @@ -0,0 +1,179 @@ +<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> + <Essential>true</Essential> + </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> + <PackageUpdate> + <Name>componentH</Name> + <DisplayName>Component H. ForcedUpdate</DisplayName> + <Description>Component H. ForcedUpdate</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <ForcedUpdate>true</ForcedUpdate> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> + <PackageUpdate> + <Name>qt.tools.qtcreator</Name> + <DisplayName>Component qtcreator. Depends on virtual component</DisplayName> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <Dependencies>qt.tools.qtcreator.enterprise.plugins</Dependencies> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> + <PackageUpdate> + <Name>qt.tools.qtcreator.enterprise.plugins</Name> + <DisplayName>enterprise plugin component</DisplayName> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <DownloadableArchives>content.7z</DownloadableArchives> + <Virtual>true</Virtual> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentA/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentA/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..4ddbe565b --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentA/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentB/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentB/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..f84ffcdc5 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentB/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentC/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentC/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..9ad11e06f --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentC/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentD/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentD/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..0c8c52e31 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentD/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentE/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentE/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..f5abacf81 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentE/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..3aced680f --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..e5385a163 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..5bc549863 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..da9e9f340 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..d0b013706 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..74ab44033 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF.subcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..4a04b1394 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentF/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..81fc02052 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0meta.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..e5c446f64 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentG/1.0.0meta.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentH/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentH/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..e1449ad29 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/componentH/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator.enterprise.plugins/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator.enterprise.plugins/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..5c7c4f37d --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator.enterprise.plugins/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..e5e4178a4 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepository/qt.tools.qtcreator/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/Updates.xml new file mode 100644 index 000000000..5fbfaa5e9 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/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>1.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>1.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/installPackagesRepositoryUpdate/componentA/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..4ddbe565b --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..9e947f5f7 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentA/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentB/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentB/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..08f7ad70d --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentB/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentC/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentC/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..3cd9e94fe --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentC/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentD/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentD/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..992b756d2 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentD/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentE/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentE/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..d6e7562b1 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentE/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..b559dd72f --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..a2109e812 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..55655d1d3 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..c469c39a9 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..164348ac9 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..921c501cd --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF.subcomponent2/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..6973624df --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentF/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..a3d72046e --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0meta.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0meta.7z Binary files differnew file mode 100644 index 000000000..a34fd36f1 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentG/2.0.0meta.7z 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 Binary files differnew file mode 100644 index 000000000..e1449ad29 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/1.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..f74b8da68 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdate/componentH/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..9e947f5f7 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentA/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..08f7ad70d --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentB/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..3cd9e94fe --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentC/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..992b756d2 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentD/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..d6e7562b1 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentE/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..b559dd72f --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..a2109e812 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..55655d1d3 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent1/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..c469c39a9 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..164348ac9 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..921c501cd --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF.subcomponent2/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..6973624df --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentF/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..a3d72046e --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..a34fd36f1 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentG/2.0.0meta.7z 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 Binary files differnew file mode 100644 index 000000000..f74b8da68 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/installPackagesRepositoryUpdateWithEssential/componentH/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/Updates.xml b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/Updates.xml new file mode 100644 index 000000000..f55998c48 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/Updates.xml @@ -0,0 +1,32 @@ +<Updates> + <ApplicationName>{AnyApplication}</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Checksum>false</Checksum> + <PackageUpdate> + <Name>qt.tools.qtcreator</Name> + <DisplayName>Component qtcreator. Dependency removed</DisplayName> + <Version>2.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> + <PackageUpdate> + <Name>qt.tools.qtcreator_gui</Name> + <DisplayName>Component K. Autodepends on componentJ</DisplayName> + <Description>Component K. Autodepends on componentJ</Description> + <Version>2.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <AutoDependOn>qt.tools.qtcreator</AutoDependOn> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> + <PackageUpdate> + <Name>qt.tools.qtcreator_gui.enterprise.plugins</Name> + <DisplayName>enterprise plugins, replaces another component</DisplayName> + <Version>2.0.0</Version> + <ReleaseDate>2018-03-14</ReleaseDate> + <Virtual>true</Virtual> + <Replaces>qt.tools.qtcreator.enterprise.plugins</Replaces> + <AutoDependOn>qt.tools.qtcreator</AutoDependOn> + <UpdateFile UncompressedSize="99" OS="Any" CompressedSize="305"/> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..f2b69fc13 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui.enterprise.plugins/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui.enterprise.plugins/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..03d191cb5 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui.enterprise.plugins/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui/2.0.0content.7z b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui/2.0.0content.7z Binary files differnew file mode 100644 index 000000000..515c3a5cf --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui/2.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/Updates.xml b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/Updates.xml new file mode 100644 index 000000000..1729f5732 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/Updates.xml @@ -0,0 +1,26 @@ +<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>3.0.0</Version> + <ReleaseDate>2015-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <Essential>true</Essential> + <UpdateFile UncompressedSize="99" OS="Any" CompressedSize="297"/> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> + <PackageUpdate> + <Name>componentAutoDependOnA</Name> + <DisplayName>Component, autodepends on A</DisplayName> + <Description>Component, autodepends on A</Description> + <Version>1.0</Version> + <ReleaseDate>2018-03-14</ReleaseDate> + <AutoDependOn>componentA</AutoDependOn> + <UpdateFile UncompressedSize="99" OS="Any" CompressedSize="305"/> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentA/3.0.0content.7z b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentA/3.0.0content.7z Binary files differnew file mode 100644 index 000000000..e8c35fdea --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentA/3.0.0content.7z diff --git a/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentAutoDependOnA/1.0content.7z b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentAutoDependOnA/1.0content.7z Binary files differnew file mode 100644 index 000000000..0f3b123e0 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/data/repositoryWithDependencyToEssential/componentAutoDependOnA/1.0content.7z diff --git a/tests/auto/installer/commandlineupdate/settings.qrc b/tests/auto/installer/commandlineupdate/settings.qrc new file mode 100644 index 000000000..c8f328d6b --- /dev/null +++ b/tests/auto/installer/commandlineupdate/settings.qrc @@ -0,0 +1,62 @@ +<RCC> + <qresource prefix="/"> + <file>data/config.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/componentH/1.0.0content.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> + <file>data/installPackagesRepository/qt.tools.qtcreator/1.0.0content.7z</file> + <file>data/installPackagesRepository/qt.tools.qtcreator.enterprise.plugins/1.0.0content.7z</file> + <file>data/installPackagesRepositoryUpdate/Updates.xml</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> + <file>data/installPackagesRepositoryUpdate/componentE/2.0.0content.7z</file> + <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/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> + <file>data/repositoryUpdateWithReplacements/Updates.xml</file> + <file>data/repositoryUpdateWithReplacements/qt.tools.qtcreator/2.0.0content.7z</file> + <file>data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui/2.0.0content.7z</file> + <file>data/repositoryUpdateWithReplacements/qt.tools.qtcreator_gui.enterprise.plugins/2.0.0content.7z</file> + </qresource> +</RCC> diff --git a/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp new file mode 100644 index 000000000..0faeecf74 --- /dev/null +++ b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp @@ -0,0 +1,418 @@ +/************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Installer Framework. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +**************************************************************************/ + +#include "../shared/packagemanager.h" +#include "../shared/verifyinstaller.h" + +#include <component.h> +#include <packagemanagercore.h> + +#include <QLoggingCategory> +#include <QTest> + +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, PackageManagerCore *core) + { + core->reset(); + core->cancelMetaInfoJob(); //Call cancel to reset metadata so that update repositories are fetched + + QSet<Repository> repoList; + Repository repo = Repository::fromUserInput(repository); + repoList.insert(repo); + core->settings().setDefaultRepositories(repoList); + } + +private slots: + + void testUpdate_data() + { + 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"); + + /*********** Update essential packages **********/ + ComponentResourceHash componentResources; + componentResources.append(ComponentResource("componentA", "1.0.0content.txt")); + componentResources.append(ComponentResource("componentE", "1.0.0content.txt")); + + ComponentResourceHash componentResourcesAfterUpdate; + componentResourcesAfterUpdate.append(ComponentResource("componentA", "2.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentE", "1.0.0content.txt")); + + ComponentResourceHash deletedComponentResources; + deletedComponentResources.append(ComponentResource("componentA", "1.0.0content.txt")); + + QTest::newRow("Update essential packages") + << ":///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; + + /*********** Update essential with autodependon**********/ + componentResourcesAfterUpdate.clear(); + componentResourcesAfterUpdate.append(ComponentResource("componentA", "3.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentAutoDependOnA", "1.0content.txt")); + + QTest::newRow("Update essential with autodependon") + << ":///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; + + + /*********** Update force update packages **********/ + componentResources.clear(); + componentResources.append(ComponentResource("componentH", "1.0.0content.txt")); + componentResources.append(ComponentResource("componentE", "1.0.0content.txt")); + + 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") + << ":///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")); + + 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") + << ":///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")); + + componentResourcesAfterUpdate.clear(); + componentResourcesAfterUpdate.append(ComponentResource("componentA", "1.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentB", "1.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentD", "1.0.0content.txt"));//AutodepenOn componentA,componentB + componentResourcesAfterUpdate.append(ComponentResource("componentE", "2.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentG", "2.0.0content.txt")); + + deletedComponentResources.clear(); + deletedComponentResources.append(ComponentResource("componentE", "1.0.0content.txt")); + deletedComponentResources.append(ComponentResource("componentG", "1.0.0content.txt")); + + QTest::newRow("Update two packages") + << ":///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.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")); + + 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") + << ":///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; + + /*********** Update packages with AutoDependOn **********/ + 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")); + + 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"));//AutodepenOn componentA,componentB + componentResourcesAfterUpdate.append(ComponentResource("componentE", "1.0.0content.txt"));//ForcedInstall, not updated without user selection + componentResourcesAfterUpdate.append(ComponentResource("componentG", "1.0.0content.txt")); + + deletedComponentResources.clear(); + deletedComponentResources.append(ComponentResource("componentB", "1.0.0content.txt")); + deletedComponentResources.append(ComponentResource("componentD", "1.0.0content.txt")); + + QTest::newRow("Update packages with AutoDependOn") + << ":///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() << "componentB") + << PackageManagerCore::Success + << componentResourcesAfterUpdate + << (QStringList() << "components.xml" << "installcontent.txt" << "installcontentA.txt" + << "installcontentD_update.txt" << "installcontentB_update.txt" + << "installcontentE.txt" << "installcontentG.txt") + << deletedComponentResources; + + /*********** Update packages with replacements **********/ + componentResources.clear(); + componentResources.append(ComponentResource("qt.tools.qtcreator", "1.0.0content.txt")); + componentResources.append(ComponentResource("qt.tools.qtcreator.enterprise.plugins", "1.0.0content.txt")); + componentResources.append(ComponentResource("componentE", "1.0.0content.txt")); + + componentResourcesAfterUpdate.clear(); + componentResourcesAfterUpdate.append(ComponentResource("qt.tools.qtcreator", "2.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("qt.tools.qtcreator_gui", "2.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("qt.tools.qtcreator_gui.enterprise.plugins", "2.0.0content.txt")); + componentResourcesAfterUpdate.append(ComponentResource("componentE", "1.0.0content.txt")); + + deletedComponentResources.clear(); + deletedComponentResources.append(ComponentResource("qt.tools.qtcreator.enterprise.plugins", "1.0.0content.txt")); + + QTest::newRow("Update packages with replacements") + << ":///data/installPackagesRepository" + << (QStringList()<< "qt.tools.qtcreator") + << PackageManagerCore::Success + << componentResources + << (QStringList() << "components.xml" << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt" + << "installcontent.txt" << "qtcreator.txt" << "plugins.txt") + << ":///data/repositoryUpdateWithReplacements" + << (QStringList() << "qt.tools.qtcreator") + << PackageManagerCore::Success + << componentResourcesAfterUpdate + << (QStringList() << "components.xml" << "installcontentA.txt" << "installcontentE.txt" << "installcontentG.txt" + << "installcontent.txt" << "gui.txt" << "qtcreator2.txt" << "gui_plugins.txt") + << deletedComponentResources; + } + + void testUpdate() + { + 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); + + PackageManagerCore *core = PackageManager::getPackageManagerWithInit(m_installDir, repository); + + QCOMPARE(status, core->installSelectedComponentsSilently(QStringList() << installComponents)); + for (const ComponentResource &resource : componentResources) { + VerifyInstaller::verifyInstallerResources(m_installDir, resource.first, resource.second); + } + VerifyInstaller::verifyFileExistence(m_installDir, installedFiles); + + core->commitSessionOperations(); + core->setPackageManager(); + setRepository(updateRepository, core); + QCOMPARE(updateStatus, core->updateComponentsSilently(updateComponents)); + + for (const ComponentResource &resource : componentResourcesAfterUpdate) { + VerifyInstaller::verifyInstallerResources(m_installDir, resource.first, resource.second); + } + for (const ComponentResource &resource : deletedComponentResources) { + VerifyInstaller::verifyInstallerResourceFileDeletion(m_installDir, resource.first, resource.second); + } + VerifyInstaller::verifyFileExistence(m_installDir, installedFilesAfterUpdate); + delete core; + } + + void testUpdateNoUpdatesForSelectedPackage() + { + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/installPackagesRepositoryUpdate")); + // No updates available for component so nothing to do + QCOMPARE(PackageManagerCore::Canceled, core->updateComponentsSilently(QStringList() + << "componentInvalid")); + } + + void init() + { + m_installDir = QInstaller::generateTemporaryFileName(); + QVERIFY(QDir().mkpath(m_installDir)); + } + + void cleanup() + { + QDir dir(m_installDir); + QVERIFY(dir.removeRecursively()); + } + +private: + QString m_installDir; +}; + + +QTEST_MAIN(tst_CommandLineUpdate) + +#include "tst_commandlineupdate.moc" |