diff options
Diffstat (limited to 'tests/auto/installer/treename')
73 files changed, 1020 insertions, 0 deletions
diff --git a/tests/auto/installer/treename/data/components.xml b/tests/auto/installer/treename/data/components.xml new file mode 100644 index 000000000..0cb0e9826 --- /dev/null +++ b/tests/auto/installer/treename/data/components.xml @@ -0,0 +1,59 @@ +<Packages> + <ApplicationName>Test Application</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Package> + <Name>ASub2ToRoot</Name> + <Title>Root component 1</Title> + <Description>A package without treename (remote treename conflicts with local name)</Description> + <TreeName></TreeName> + <Version>1.0.0-1</Version> + <LastUpdateDate></LastUpdateDate> + <InstallDate>2021-01-01</InstallDate> + <Size>0</Size> + <Checkable>true</Checkable> + </Package> + <Package> + <Name>B</Name> + <Title>Root component 2</Title> + <Description>A package with treename (remote treename conflicts with local treename)</Description> + <TreeName>BSub2ToRoot</TreeName> + <Version>1.0.0-1</Version> + <LastUpdateDate></LastUpdateDate> + <InstallDate>2021-01-01</InstallDate> + <Size>0</Size> + <Checkable>true</Checkable> + </Package> + <Package> + <Name>componentB.sub1.sub2</Name> + <Title>Sub component</Title> + <Description>A package with treename (remote has different treename)</Description> + <TreeName>componentC.sub2</TreeName> + <Version>1.0.0-1</Version> + <LastUpdateDate></LastUpdateDate> + <InstallDate>2021-01-01</InstallDate> + <Size>0</Size> + <Checkable>true</Checkable> + </Package> + <Package> + <Name>C</Name> + <Title>Root component 3</Title> + <Description>A package with treename (remote name conflicts with local treename)</Description> + <TreeName>componentA</TreeName> + <Version>1.0.0-1</Version> + <LastUpdateDate></LastUpdateDate> + <InstallDate>2021-01-01</InstallDate> + <Size>0</Size> + <Checkable>true</Checkable> + </Package> + <Package> + <Name>componentD</Name> + <Title>Root component 4</Title> + <Description>A package with treename (remote does not have treename)</Description> + <TreeName>componentDNew</TreeName> + <Version>1.0.0-1</Version> + <LastUpdateDate></LastUpdateDate> + <InstallDate>2021-01-01</InstallDate> + <Size>0</Size> + <Checkable>true</Checkable> + </Package> +</Packages> diff --git a/tests/auto/installer/treename/data/invalid_repository/Updates.xml b/tests/auto/installer/treename/data/invalid_repository/Updates.xml new file mode 100644 index 000000000..b329bb223 --- /dev/null +++ b/tests/auto/installer/treename/data/invalid_repository/Updates.xml @@ -0,0 +1,55 @@ +<Updates> + <ApplicationName>{AnyApplication}</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Checksum>false</Checksum> + <PackageUpdate> + <Name>componentA</Name> + <DisplayName>Component A</DisplayName> + <Description>This component depends on componentB.sub2.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + </PackageUpdate> + <PackageUpdate> + <Name>componentA.sub1</Name> + <DisplayName>Component A subcomponent 1</DisplayName> + <Description>component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + </PackageUpdate> + <PackageUpdate> + <Name>componentB</Name> + <DisplayName>Component B</DisplayName> + <Description>Component B</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>40</SortingPriority> + <TreeName>componentA.sub1</TreeName> + </PackageUpdate> + <PackageUpdate> + <Name>componentC.sub1</Name> + <DisplayName>Component C subcomponent1</DisplayName> + <Description>Component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>40</SortingPriority> + </PackageUpdate> + <PackageUpdate> + <Name>componentD</Name> + <DisplayName>Component D</DisplayName> + <Description>Component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>40</SortingPriority> + <TreeName moveChildren="true">componentC</TreeName> + </PackageUpdate> + <PackageUpdate> + <Name>componentD.sub1</Name> + <DisplayName>Component D subcomponent 1</DisplayName> + <Description>Component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>40</SortingPriority> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/treename/data/repository/Updates.xml b/tests/auto/installer/treename/data/repository/Updates.xml new file mode 100644 index 000000000..295f076dd --- /dev/null +++ b/tests/auto/installer/treename/data/repository/Updates.xml @@ -0,0 +1,135 @@ +<Updates> + <ApplicationName>{AnyApplication}</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Checksum>false</Checksum> + <PackageUpdate> + <Name>componentA</Name> + <DisplayName>Component A</DisplayName> + <Description>This component depends on componentB.sub2.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <Dependencies>componentB.sub2</Dependencies> + <UpdateFile CompressedSize="275" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>570dec768b1f266c66656f015e772f0e6e41b73d</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentA.sub1</Name> + <DisplayName>Component A subcomponent 1</DisplayName> + <Description>component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <UpdateFile CompressedSize="283" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>da5819910a7f7c95eb61a49543e273fd6e2e9aae</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentA.sub2</Name> + <DisplayName>Component A subcomponent 2</DisplayName> + <Description>component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <TreeName>ASub2ToRoot</TreeName> + <UpdateFile CompressedSize="283" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>73ac2c332ce01fadf0f1c7e16a27faaf0f853e18</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB</Name> + <DisplayName>Component B</DisplayName> + <Description>Component B</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>40</SortingPriority> + <UpdateFile CompressedSize="275" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>72eee5304ff866e024b477d7b2432df8f2428483</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB.sub1</Name> + <DisplayName>Component B subcomponent 2 1</DisplayName> + <Description>Subcomponent for B</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <UpdateFile CompressedSize="283" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>e19f1a26698afe0b72c9048b403253421b8fed4b</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB.sub1.sub1</Name> + <DisplayName>Component B sub component for sub1</DisplayName> + <Description>Subsubcomponent for B. Moved to root with treename.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <TreeName>BSub1Sub1ToRoot</TreeName> + <UpdateFile CompressedSize="291" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>6a348979273336862c7a5e16305779e81fee1081</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB.sub1.sub2</Name> + <DisplayName>Component B second sub component for sub1</DisplayName> + <Description>Subsubcomponent for B. Moved under componentC with treename.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <TreeName>componentC.sub1</TreeName> + <UpdateFile CompressedSize="291" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>c1bca8944147ec64343c146f461288990268b4a9</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB.sub2</Name> + <DisplayName>Component B subcomponent 2</DisplayName> + <Description>Subcomponent for B. Moved to root with treename.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>8000</SortingPriority> + <TreeName>BSub2ToRoot</TreeName> + <UpdateFile CompressedSize="283" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>bde9feba3a8134e9c1412b674ee21642938fafec</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentC</Name> + <DisplayName>Component C</DisplayName> + <Description>Component C</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <UpdateFile CompressedSize="275" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>cc33e730d9127e1636566ea35bbe4f186ba4bcb7</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentD</Name> + <DisplayName>Component D</DisplayName> + <Description>Component D. Autodepends on moved item componentA.sub2 </Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <AutoDependOn>componentA.sub2</AutoDependOn> + <UpdateFile CompressedSize="275" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>3ca69d6bb062c4442fdb20fe0e62bb0f04e8a419</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentE</Name> + <DisplayName>Component E</DisplayName> + <Description>Component with tree name, is replaced by other component.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + <TreeName>EToNewRoot</TreeName> + </PackageUpdate> + <PackageUpdate> + <Name>componentF</Name> + <DisplayName>Component F</DisplayName> + <Description>Component that replaces other component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + <Replaces>componentE</Replaces> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..f7e22c055 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z.sha1 new file mode 100644 index 000000000..3378d2da5 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +d46bf0f128c64749fb03050045afc816774185e2
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..81ff563fc --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..d7f4c781c --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z.sha1 new file mode 100644 index 000000000..0eb4045af --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +6561aae70d055e1c4d72b30b12aef7a85cf2139e
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..38d7c557d --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA.sub2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..e50fc1e92 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z.sha1 new file mode 100644 index 000000000..082bcbf64 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +d8486606a02b9c492e4c17d1e42cfea835a1da51
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentA/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentA/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..c062c3cee --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentA/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..2c254e3aa --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z.sha1 new file mode 100644 index 000000000..019ab5051 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +3fd04b8e55846f9622ffb8f9ae5f4e6c8b57f90e
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..31630e810 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..261ea6ab9 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z.sha1 new file mode 100644 index 000000000..c3753ca62 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +2e89c27c3590e12cd900cb55fa2c91428babfd45
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..c449e57f6 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1.sub2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..d938d0fb2 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z.sha1 new file mode 100644 index 000000000..3db5bca08 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +2407a2adb3d82211921b509e6dd792d67862de0e
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..6996a4d01 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..7319cf08f --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z.sha1 new file mode 100644 index 000000000..855e2edab --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +a8b85ffe4f91b4dc68a6402b314402949ef17a7a
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..b91e41207 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB.sub2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..b3a0e683c --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z.sha1 new file mode 100644 index 000000000..377526fb6 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +274b3dbe9cceeca1b577eb2a8302d7690ad93eb3
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentB/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentB/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..e9ab3969d --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentB/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..7eca1e977 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z.sha1 new file mode 100644 index 000000000..d3b44feee --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentC/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +d3015ef5340508ad426c43daa2517c7b62581bab
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentC/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentC/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..47ea321ec --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentC/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z b/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..2299f9812 --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z.sha1 b/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z.sha1 new file mode 100644 index 000000000..51dcdd0ed --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentD/1.0.0content.7z.sha1 @@ -0,0 +1 @@ +5ce5b91fb7ce209d83ba616ac01bf30e2942f70c
\ No newline at end of file diff --git a/tests/auto/installer/treename/data/repository/componentD/1.0.0meta.7z b/tests/auto/installer/treename/data/repository/componentD/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..3443e843b --- /dev/null +++ b/tests/auto/installer/treename/data/repository/componentD/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/Updates.xml b/tests/auto/installer/treename/data/repository_children/Updates.xml new file mode 100644 index 000000000..a17f481d6 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/Updates.xml @@ -0,0 +1,229 @@ +<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> + <TreeName moveChildren="true">componentANew</TreeName> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>8148a84c9a52eb989525f4807482f42c49c743a4</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentA.subcomponent1</Name> + <DisplayName>Subcomponent 1</DisplayName> + <Description>This component does not have leaf components.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>c0c5d273b9c413db07fbd1ffee58759f0059d668</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentB</Name> + <DisplayName>Component B (automatic dependency to componentA.subcomponent1)</DisplayName> + <Description>This component has an automatic dependency, If the dependency is marked for installation, this component is also installed.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>90</SortingPriority> + <AutoDependOn>componentA.subcomponent1</AutoDependOn> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>c517b08c40ef5c5984f6bf34a626060dcbab6ba5</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentE</Name> + <DisplayName>Component E</DisplayName> + <Description>This is a component.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>60</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>2833ea6d508925e64f00fb6b699532992b923ab2</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 UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>21ca242b83ce32dfe066348cbb453080b5967e30</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> + <TreeName moveChildren="true">FSub1ToRoot</TreeName> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>e2745196bceaae476cac330f0af0ce6e564d2d3d</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 UncompressedSize="99" CompressedSize="271" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>8af98107adadb1fda37c1c086c53ed289cc77661</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 UncompressedSize="99" CompressedSize="271" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>69458b616989a44e52b480dd9133721bc52b1558</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> + <TreeName moveChildren="true">componentE.sub1</TreeName> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>9d985ee35442e6e621f8ec24dc41be9f6cab9dad</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 UncompressedSize="99" CompressedSize="271" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>43223427efd8c2a428ead343a79709cd1bfc5618</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 UncompressedSize="99" CompressedSize="271" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>d76690fb2f41aab262d7d8621c46fa464f35a550</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentH</Name> + <DisplayName>Component H</DisplayName> + <Description>An example component without dependencies.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>30</SortingPriority> + <TreeName moveChildren="true">componentI</TreeName> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>04426aec311900e8d74ae42cc6fe49282d314841</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentH.subcomponent1</Name> + <DisplayName>Subcomponent 1</DisplayName> + <Description>This component does not contain leaf components.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>065a901fd86d4e7fd86200da47079c97070178c7</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentI.subcomponent2</Name> + <DisplayName>Subcomponent 1</DisplayName> + <Description>Subcomponent without original parent.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>30</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>3d2d928ed10455fe884cab96498a3fc826505406</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentJ</Name> + <DisplayName>Component J</DisplayName> + <Description>An example component without dependencies.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>30</SortingPriority> + <TreeName moveChildren="true">componentJNew</TreeName> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>1a46e58cd1824b2c0a4a93d6b27050eb0f6feb29</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentJ.subcomponent1</Name> + <DisplayName>Subcomponent 1</DisplayName> + <Description>Subcomponent with parent.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>30</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="267" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>dd1cfaa8f6cd14f81635e8917f348006ca7ffdce</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentK</Name> + <DisplayName>Component K (depends on componentJ.subcomponent1)</DisplayName> + <Description>This component depends on Component J subcomponent.</Description> + <Dependencies>componentJ.subcomponent1</Dependencies> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <UpdateFile UncompressedSize="99" CompressedSize="263" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <SHA1>98253c1ab872c9baa64d2fe3525f86a65e73d1f2</SHA1> + </PackageUpdate> + <PackageUpdate> + <Name>componentL</Name> + <DisplayName>Component L</DisplayName> + <Description>Component with tree name, is replaced by other component.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + <TreeName moveChildren="true">LToNewRoot</TreeName> + </PackageUpdate> + <PackageUpdate> + <Name>componentL.sub1</Name> + <DisplayName>Component L subcomponent 1</DisplayName> + <Description>Child of component L</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + </PackageUpdate> + <PackageUpdate> + <Name>componentL.sub2</Name> + <DisplayName>Component L subcomponent 2</DisplayName> + <Description>Child of component L</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + </PackageUpdate> + <PackageUpdate> + <Name>componentM</Name> + <DisplayName>Component M</DisplayName> + <Description>Component that replaces other component</Description> + <Version>1.0.0</Version> + <ReleaseDate>2022-01-01</ReleaseDate> + <Replaces>componentL</Replaces> + </PackageUpdate> +</Updates> diff --git a/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..095fd7e30 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..5dcce5d73 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentA.subcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentA/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentA/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..21d62e629 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentA/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentA/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentA/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..094ae8806 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentA/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentB/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentB/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..2cb5dfee9 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentB/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentB/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentB/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..d3ed0961e --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentB/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentE/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentE/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..cfdef213e --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentE/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentE/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentE/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..466926547 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentE/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..3e9297acc --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..7adec9a82 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..b715e5587 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..69406b1b2 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..f2d2141d7 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..1f5c58d2d --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..5307b3de4 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..1b44385ab --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..7e83e996e --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..c89ac2b7b --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..9c97e4a99 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..258b3905f --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF.subcomponent2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentF/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..12c4c1248 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentF/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentF/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..88ec39233 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentF/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..4b2747235 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..ab120d4c3 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentH.subcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentH/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentH/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..767f789ff --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentH/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentH/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentH/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..e5c9b47c9 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentH/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..2000479c9 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..8ecfeaca8 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..09a8e921a --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..acaccd042 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentI.subcomponent2/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..25247bad4 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..c45a63b41 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentJ.subcomponent1/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..aa3354b8c --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..14b41bdfe --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentJ/1.0.0meta.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentK/1.0.0content.7z b/tests/auto/installer/treename/data/repository_children/componentK/1.0.0content.7z Binary files differnew file mode 100644 index 000000000..e28bb9ea7 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentK/1.0.0content.7z diff --git a/tests/auto/installer/treename/data/repository_children/componentK/1.0.0meta.7z b/tests/auto/installer/treename/data/repository_children/componentK/1.0.0meta.7z Binary files differnew file mode 100644 index 000000000..9112f88c3 --- /dev/null +++ b/tests/auto/installer/treename/data/repository_children/componentK/1.0.0meta.7z diff --git a/tests/auto/installer/treename/settings.qrc b/tests/auto/installer/treename/settings.qrc new file mode 100644 index 000000000..9b31cbade --- /dev/null +++ b/tests/auto/installer/treename/settings.qrc @@ -0,0 +1,65 @@ +<RCC> + <qresource prefix="/"> + <file>data/components.xml</file> + + <file>data/repository/Updates.xml</file> + <file>data/repository/componentA/1.0.0meta.7z</file> + <file>data/repository/componentA/1.0.0content.7z</file> + <file>data/repository/componentA.sub1/1.0.0meta.7z</file> + <file>data/repository/componentA.sub1/1.0.0content.7z</file> + <file>data/repository/componentA.sub2/1.0.0meta.7z</file> + <file>data/repository/componentA.sub2/1.0.0content.7z</file> + <file>data/repository/componentB/1.0.0meta.7z</file> + <file>data/repository/componentB/1.0.0content.7z</file> + <file>data/repository/componentB.sub1/1.0.0meta.7z</file> + <file>data/repository/componentB.sub1/1.0.0content.7z</file> + <file>data/repository/componentB.sub1.sub1/1.0.0meta.7z</file> + <file>data/repository/componentB.sub1.sub1/1.0.0content.7z</file> + <file>data/repository/componentB.sub1.sub2/1.0.0meta.7z</file> + <file>data/repository/componentB.sub1.sub2/1.0.0content.7z</file> + <file>data/repository/componentB.sub2/1.0.0meta.7z</file> + <file>data/repository/componentB.sub2/1.0.0content.7z</file> + <file>data/repository/componentC/1.0.0meta.7z</file> + <file>data/repository/componentC/1.0.0content.7z</file> + <file>data/repository/componentD/1.0.0meta.7z</file> + <file>data/repository/componentD/1.0.0content.7z</file> + + <file>data/invalid_repository/Updates.xml</file> + + <file>data/repository_children/componentA/1.0.0content.7z</file> + <file>data/repository_children/componentA/1.0.0meta.7z</file> + <file>data/repository_children/componentA.subcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentA.subcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentB/1.0.0content.7z</file> + <file>data/repository_children/componentB/1.0.0meta.7z</file> + <file>data/repository_children/componentE/1.0.0content.7z</file> + <file>data/repository_children/componentE/1.0.0meta.7z</file> + <file>data/repository_children/componentF/1.0.0content.7z</file> + <file>data/repository_children/componentF/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent1.subsubcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent1.subsubcomponent2/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent2/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent2/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent2.subsubcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0content.7z</file> + <file>data/repository_children/componentF.subcomponent2.subsubcomponent2/1.0.0meta.7z</file> + <file>data/repository_children/componentH/1.0.0content.7z</file> + <file>data/repository_children/componentH/1.0.0meta.7z</file> + <file>data/repository_children/componentH.subcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentH.subcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentI.subcomponent2/1.0.0content.7z</file> + <file>data/repository_children/componentI.subcomponent2/1.0.0meta.7z</file> + <file>data/repository_children/componentJ/1.0.0content.7z</file> + <file>data/repository_children/componentJ/1.0.0meta.7z</file> + <file>data/repository_children/componentJ.subcomponent1/1.0.0content.7z</file> + <file>data/repository_children/componentJ.subcomponent1/1.0.0meta.7z</file> + <file>data/repository_children/componentK/1.0.0content.7z</file> + <file>data/repository_children/componentK/1.0.0meta.7z</file> + <file>data/repository_children/Updates.xml</file> + </qresource> +</RCC> diff --git a/tests/auto/installer/treename/treename.pro b/tests/auto/installer/treename/treename.pro new file mode 100644 index 000000000..97315faad --- /dev/null +++ b/tests/auto/installer/treename/treename.pro @@ -0,0 +1,10 @@ +include(../../qttest.pri) + +QT -= gui +QT += testlib + +SOURCES += tst_treename.cpp + +RESOURCES += \ + settings.qrc \ + ../shared/config.qrc diff --git a/tests/auto/installer/treename/tst_treename.cpp b/tests/auto/installer/treename/tst_treename.cpp new file mode 100644 index 000000000..2c8be6ddd --- /dev/null +++ b/tests/auto/installer/treename/tst_treename.cpp @@ -0,0 +1,457 @@ +/************************************************************************** +** +** 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 <packagemanagercore.h> +#include <component.h> +#include <componentmodel.h> + +#include <QTest> +#include <QRegularExpression> + +class tst_TreeName : public QObject +{ + Q_OBJECT + +private slots: + void moveToRoot(); + void moveToSubItem(); + void dependencyToMovedItem(); + void autodependOnMovedItem(); + + void moveToExistingAllowUnstableComponents(); + void moveToExistingItemNoUnstableComponents(); + void moveWithChildrenChildConflictsAllowUnstable(); + void moveWithChildrenChildConflictsNoUnstable(); + + void moveToRootWithChildren(); + void moveToSubItemWithChildren(); + void moveToAvailableParentItemWithChilren(); + void dependencyToMovedSubItem(); + void autoDependOnMovedSubItem(); + + void replaceComponentWithTreeName(); + void replaceComponentWithTreeNameMoveChildren(); + + void remotePackageConflictsLocal(); + + void init(); + void cleanup(); + +private: + QString m_installDir; + +}; + +void tst_TreeName::moveToRoot() +{ + // componentB.sub1.sub1 moved from sub item to root (BSub1Sub1ToRoot) + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentB.sub1.sub1")); + QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 1); + QCOMPARE(installedComponents.at(0)->name(), "componentB.sub1.sub1"); + QCOMPARE(installedComponents.at(0)->treeName(), "BSub1Sub1ToRoot"); + QVERIFY(core->componentByName("componentB.sub1.sub1") != 0); + QVERIFY(core->componentByName("BSub1Sub1ToRoot") == 0); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentB.sub1.sub1", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "componentBSub1Sub1.txt"); +} + +void tst_TreeName::moveToSubItem() +{ + // componentB.sub1.sub2 moved under componentC (componentC.sub1) + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository")); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentC")); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentB.sub1.sub2", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentC", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "componentBSub1Sub2.txt" << "componentC.txt"); +} + +void tst_TreeName::dependencyToMovedItem() +{ + // componentA depends on componentB.sub2 which is moved to root + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentA")); + + VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentA.sub1", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentB.sub2", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "componentA.txt" << "componentASub1.txt" << "componentBSub2.txt"); +} + +void tst_TreeName::autodependOnMovedItem() +{ + // componentD autodepends on componentA.sub2 which is moved to root + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentA.sub2")); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentA.sub2", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentD", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "componentASub2.txt" << "componentD.txt"); +} + +void tst_TreeName::moveToExistingAllowUnstableComponents() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/invalid_repository")); + core->settings().setAllowUnstableComponents(true); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentA")); + QVERIFY(core->componentByName("componentB")->isUnstable()); +} + +void tst_TreeName::moveToExistingItemNoUnstableComponents() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/invalid_repository")); + core->settings().setAllowUnstableComponents(false); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentA")); + QVERIFY(!core->componentByName("componentB")); +} + +void tst_TreeName::replaceComponentWithTreeName() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository")); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentF")); + QVERIFY(core->componentByName("componentF")->value(scTreeName).isEmpty()); + QVERIFY(!core->componentByName("componentE")); +} + +void tst_TreeName::replaceComponentWithTreeNameMoveChildren() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentM")); + QVERIFY(core->componentByName("componentM")->value(scTreeName).isEmpty()); + QVERIFY(!core->componentByName("componentL")); + + Component *component1 = core->componentByName("componentL.sub1"); + QCOMPARE(component1->treeName(), component1->name()); + + Component *component2 = core->componentByName("componentL.sub2"); + QCOMPARE(component2->treeName(), component2->name()); +} + +void tst_TreeName::moveWithChildrenChildConflictsAllowUnstable() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/invalid_repository")); + core->settings().setAllowUnstableComponents(true); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentD")); + Component *const component = core->componentByName("componentD.sub1"); + QVERIFY(component && component->isUnstable() && !component->isInstalled()); +} + +void tst_TreeName::moveWithChildrenChildConflictsNoUnstable() +{ + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/invalid_repository")); + core->settings().setAllowUnstableComponents(false); + + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently(QStringList() << "componentD")); + QVERIFY(!core->componentByName("componentD.sub1")); +} + +void tst_TreeName::moveToRootWithChildren() +{ + // componentF.subcomponent1 moved from sub item to root (FSub1ToRoot) + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently( + QStringList() << "componentF.subcomponent1")); + const QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 3); + + Component const *parent = installedComponents.at(0); + QCOMPARE(parent->name(), "componentF.subcomponent1"); + QCOMPARE(parent->treeName(), "FSub1ToRoot"); + QVERIFY(parent->value(scAutoTreeName).isEmpty()); + + Component const *child1 = installedComponents.at(1); + QCOMPARE(child1->name(), "componentF.subcomponent1.subsubcomponent1"); + QCOMPARE(child1->treeName(), "FSub1ToRoot.subsubcomponent1"); + QCOMPARE(child1->treeName(), child1->value(scAutoTreeName)); + + Component const *child2 = installedComponents.at(2); + QCOMPARE(child2->name(), "componentF.subcomponent1.subsubcomponent2"); + QCOMPARE(child2->treeName(), "FSub1ToRoot.subsubcomponent2"); + QCOMPARE(child2->treeName(), child2->value(scAutoTreeName)); + + QVERIFY(core->componentByName("componentF.subcomponent1")); + QVERIFY(!core->componentByName("FSub1ToRoot")); + QVERIFY(core->componentByName("componentF.subcomponent1.subsubcomponent1")); + QVERIFY(!core->componentByName("FSub1ToRoot.subsubcomponent1")); + QVERIFY(core->componentByName("componentF.subcomponent1.subsubcomponent2")); + QVERIFY(!core->componentByName("FSub1ToRoot.subsubcomponent2")); + + 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.subcomponent1.subsubcomponent2", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "installcontentF_1.txt" << "installcontentF_1_1.txt" << "installcontentF_1_2.txt"); +} + +void tst_TreeName::moveToSubItemWithChildren() +{ + // componentF.subcomponent2 moved under componentE (componentE.sub1) + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently( + QStringList() << "componentF.subcomponent2")); + const QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 4); + + Component const *parent = installedComponents.at(1); + QCOMPARE(parent->name(), "componentF.subcomponent2"); + QCOMPARE(parent->treeName(), "componentE.sub1"); + QVERIFY(parent->value(scAutoTreeName).isEmpty()); + + Component const *child1 = installedComponents.at(2); + QCOMPARE(child1->name(), "componentF.subcomponent2.subsubcomponent1"); + QCOMPARE(child1->treeName(), "componentE.sub1.subsubcomponent1"); + QCOMPARE(child1->treeName(), child1->value(scAutoTreeName)); + + Component const *child2 = installedComponents.at(3); + QCOMPARE(child2->name(), "componentF.subcomponent2.subsubcomponent2"); + QCOMPARE(child2->treeName(), "componentE.sub1.subsubcomponent2"); + QCOMPARE(child2->treeName(), child2->value(scAutoTreeName)); + + QVERIFY(core->componentByName("componentF.subcomponent2")); + QVERIFY(!core->componentByName("componentE.sub1")); + QVERIFY(core->componentByName("componentF.subcomponent2.subsubcomponent1")); + QVERIFY(!core->componentByName("componentE.sub1.subsubcomponent1")); + QVERIFY(core->componentByName("componentF.subcomponent2.subsubcomponent2")); + QVERIFY(!core->componentByName("componentE.sub1.subsubcomponent2")); + + VerifyInstaller::verifyInstallerResources(m_installDir, "componentE", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentF.subcomponent2", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentF.subcomponent2.subsubcomponent1", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentF.subcomponent2.subsubcomponent2", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "installcontentE.txt" << "installcontentF_2.txt" << "installcontentF_2_1.txt" + << "installcontentF_2_2.txt"); +} + +void tst_TreeName::moveToAvailableParentItemWithChilren() +{ + // componentH moved to componentI + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently( + QStringList() << "componentH")); + const QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 3); + + Component const *parent = installedComponents.at(0); + QCOMPARE(parent->name(), "componentH"); + QCOMPARE(parent->treeName(), "componentI"); + QVERIFY(parent->value(scAutoTreeName).isEmpty()); + + Component const *child1 = installedComponents.at(1); + QCOMPARE(child1->name(), "componentH.subcomponent1"); + QCOMPARE(child1->treeName(), "componentI.subcomponent1"); + QCOMPARE(child1->treeName(), child1->value(scAutoTreeName)); + + Component const *child2 = installedComponents.at(2); + QCOMPARE(child2->name(), "componentI.subcomponent2"); + QCOMPARE(child2->treeName(), child2->name()); + QVERIFY(child2->value(scAutoTreeName).isEmpty()); + + QVERIFY(core->componentByName("componentH")); + QVERIFY(!core->componentByName("componentI")); + QVERIFY(core->componentByName("componentH.subcomponent1")); + QVERIFY(!core->componentByName("componentI.subcomponent1")); + QVERIFY(core->componentByName("componentI.subcomponent2")); + + VerifyInstaller::verifyInstallerResources(m_installDir, "componentH", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentH.subcomponent1", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentI.subcomponent2", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "installcontentH.txt" << "installcontentH_1.txt" << "installcontentI_2.txt"); +} + +void tst_TreeName::dependencyToMovedSubItem() +{ + // componentK has dependency to componentJ.subcomponent1, which has a parent with treename + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently( + QStringList() << "componentK")); + const QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 2); + + Component const *component1 = installedComponents.at(0); + QCOMPARE(component1->name(), "componentJ.subcomponent1"); + QCOMPARE(component1->treeName(), "componentJNew.subcomponent1"); + QCOMPARE(component1->treeName(), component1->value(scAutoTreeName)); + + Component const *component2 = installedComponents.at(1); + QCOMPARE(component2->name(), "componentK"); + QCOMPARE(component2->treeName(), component2->name()); + QVERIFY(component2->value(scAutoTreeName).isEmpty()); + + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentJ.subcomponent1", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentK", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "installcontentJ_1.txt" << "installcontentK.txt"); +} + +void tst_TreeName::autoDependOnMovedSubItem() +{ + // componentB auto-depends on componentA.subcomponent1, which has a parent with treename + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit + (m_installDir, ":///data/repository_children")); + QCOMPARE(PackageManagerCore::Success, core->installSelectedComponentsSilently( + QStringList() << "componentA.subcomponent1")); + const QList<Component*> installedComponents = core->orderedComponentsToInstall(); + + QCOMPARE(installedComponents.count(), 3); + + Component const *component1 = installedComponents.at(0); + QCOMPARE(component1->name(), "componentA"); + QCOMPARE(component1->treeName(), "componentANew"); + QVERIFY(component1->value(scAutoTreeName).isEmpty()); + + Component const *component2 = installedComponents.at(1); + QCOMPARE(component2->name(), "componentA.subcomponent1"); + QCOMPARE(component2->treeName(), "componentANew.subcomponent1"); + QCOMPARE(component2->treeName(), component2->value(scAutoTreeName)); + + Component const *component3 = installedComponents.at(2); + QCOMPARE(component3->name(), "componentB"); + QCOMPARE(component3->treeName(), component3->name()); + + VerifyInstaller::verifyInstallerResources(m_installDir, "componentA", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, + "componentA.subcomponent1", "1.0.0content.txt"); + VerifyInstaller::verifyInstallerResources(m_installDir, "componentB", "1.0.0content.txt"); + VerifyInstaller::verifyFileExistence(m_installDir, QStringList() << "components.xml" + << "installcontentA.txt" << "installcontentA_1.txt" << "installcontentB.txt"); +} + +void tst_TreeName::remotePackageConflictsLocal() +{ + const QString packageHubFile = qApp->applicationDirPath() + QDir::separator() + "components.xml"; + QFile::remove(packageHubFile); + QVERIFY(QFile::copy(":///data/components.xml", packageHubFile)); + // For some reason Windows sets the read-only flag when we copy the resource.. + QVERIFY(setDefaultFilePermissions(packageHubFile, DefaultFilePermissions::NonExecutable)); + + QHash<QString, QString> params; + params.insert(scTargetDir, qApp->applicationDirPath()); + PackageManagerCore core(BinaryContent::MagicPackageManagerMarker, QList<OperationBlob>(), + QString(), QString(), Protocol::DefaultAuthorizationKey, Protocol::Mode::Production, params); + + core.settings().setAllowUnstableComponents(true); + core.settings().setDefaultRepositories(QSet<Repository>() + << Repository::fromUserInput(":///data/repository")); + + QVERIFY(core.fetchRemotePackagesTree()); + { + // Remote treename conflicts with local name + Component *const local = core.componentByName("ASub2ToRoot"); + QVERIFY(local && local->isInstalled()); + + Component *const remote = core.componentByName("componentA.sub2"); + QVERIFY(remote && remote->isUnstable()); + QCOMPARE(remote->treeName(), remote->name()); + } + { + // Remote treename conflicts with local treename + Component *const local = core.componentByName("B"); + QVERIFY(local && local->isInstalled() && local->treeName() == "BSub2ToRoot"); + + Component *const remote = core.componentByName("componentB.sub2"); + QVERIFY(remote && remote->isUnstable()); + QCOMPARE(remote->treeName(), remote->name()); + } + { + // Remote name conflicts with local treename + Component *const local = core.componentByName("C"); + QVERIFY(local && local->isInstalled() && local->treeName() == "componentA"); + + Component *const remote = core.componentByName("componentA"); + QVERIFY(!remote); + } + { + // Component has a treename in local but not in remote, add with local treename + Component *const component = core.componentByName("componentD"); + QVERIFY(component && component->isInstalled() && component->treeName() == "componentDNew"); + } + { + // Component has different treename in local and remote, add with local treename + Component *const component = core.componentByName("componentB.sub1.sub2"); + QVERIFY(component && component->isInstalled() && component->treeName() == "componentC.sub2"); + } + QVERIFY(QFile::remove(packageHubFile)); +} + +void tst_TreeName::init() +{ + m_installDir = QInstaller::generateTemporaryFileName(); + QVERIFY(QDir().mkpath(m_installDir)); +} + +void tst_TreeName::cleanup() +{ + QDir dir(m_installDir); + QVERIFY(dir.removeRecursively()); +} + +QTEST_MAIN(tst_TreeName) + +#include "tst_treename.moc" |