diff options
Diffstat (limited to 'tests/auto')
4 files changed, 220 insertions, 8 deletions
diff --git a/tests/auto/installer/componentalias/data/aliases-optional.xml b/tests/auto/installer/componentalias/data/aliases-optional.xml index bc16013b7..2016592c1 100644 --- a/tests/auto/installer/componentalias/data/aliases-optional.xml +++ b/tests/auto/installer/componentalias/data/aliases-optional.xml @@ -33,4 +33,12 @@ <Virtual>false</Virtual> <RequiredAliases>set-nonexistent</RequiredAliases> </Alias> + <Alias> + <Name>set-optional-broken-component</Name> + <DisplayName>Dependency to optional unstable component</DisplayName> + <Description>Dependency to optional unstable component</Description> + <Version>2.0.0</Version> + <Virtual>false</Virtual> + <OptionalComponents>UnstableComponent</OptionalComponents> + </Alias> </Aliases> diff --git a/tests/auto/installer/componentalias/data/repository/Updates.xml b/tests/auto/installer/componentalias/data/repository/Updates.xml index e128590dc..64950244f 100644 --- a/tests/auto/installer/componentalias/data/repository/Updates.xml +++ b/tests/auto/installer/componentalias/data/repository/Updates.xml @@ -40,4 +40,12 @@ <Version>1.0.0-1</Version> <ReleaseDate>2015-01-01</ReleaseDate> </PackageUpdate> + <PackageUpdate> + <Name>UnstableComponent</Name> + <DisplayName>Subcomponent of subcomponent component</DisplayName> + <Description>Example subcomponent of subcomponent</Description> + <Version>1.0.0-1</Version> + <ReleaseDate>2015-01-01</ReleaseDate> + <Dependencies>missing.component</Dependencies> + </PackageUpdate> </Updates> diff --git a/tests/auto/installer/componentalias/metadata/installer-config/aliases.xml b/tests/auto/installer/componentalias/metadata/installer-config/aliases.xml index 278ae918b..2362e51c7 100644 --- a/tests/auto/installer/componentalias/metadata/installer-config/aliases.xml +++ b/tests/auto/installer/componentalias/metadata/installer-config/aliases.xml @@ -49,4 +49,36 @@ <RequiredAliases>set-A,set-B</RequiredAliases> <RequiredComponents>C</RequiredComponents> </Alias> + <Alias> + <Name>set-required-component-from-fallback</Name> + <DisplayName>Installation (fetches component from fallback repository)</DisplayName> + <Description>Installs component</Description> + <Version>1.0.0</Version> + <Virtual>false</Virtual> + <RequiredComponents>A</RequiredComponents> + </Alias> + <Alias> + <Name>set-optional-component-from-fallback</Name> + <DisplayName>Installation (fetches optional component from fallback repository)</DisplayName> + <Description>Installs component</Description> + <Version>1.0.0</Version> + <Virtual>false</Virtual> + <OptionalComponents>A</OptionalComponents> + </Alias> + <Alias> + <Name>set-optional-broken-component-from-fallback</Name> + <DisplayName>Installation (fetches optional component from fallback repository)</DisplayName> + <Description>Installs component</Description> + <Version>1.0.0</Version> + <Virtual>false</Virtual> + <OptionalComponents>UnstableComponent</OptionalComponents> + </Alias> + <Alias> + <Name>set-required-broken-component-from-fallback</Name> + <DisplayName>Installation (fetches optional component from fallback repository)</DisplayName> + <Description>Installs component</Description> + <Version>1.0.0</Version> + <Virtual>false</Virtual> + <RequiredComponents>UnstableComponent</RequiredComponents> + </Alias> </Aliases> diff --git a/tests/auto/installer/componentalias/tst_componentalias.cpp b/tests/auto/installer/componentalias/tst_componentalias.cpp index f6742af1f..51f6ca635 100644 --- a/tests/auto/installer/componentalias/tst_componentalias.cpp +++ b/tests/auto/installer/componentalias/tst_componentalias.cpp @@ -46,6 +46,40 @@ private slots: { m_installDir = QInstaller::generateTemporaryFileName(); QVERIFY(QDir().mkpath(m_installDir)); + m_fallbackRepositoryData = QLatin1String("========================================\n" + "Name: set-optional-broken-component-from-fallback\n" + "Display name: Installation (fetches optional component from fallback repository)\n" + "Description: Installs component\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: \n" + "Optional components: UnstableComponent\n" + "Optional aliases: \n" + "========================================\n" + "Name: set-optional-component-from-fallback\n" + "Display name: Installation (fetches optional component from fallback repository)\n" + "Description: Installs component\n" + "Version: 1.0.0\nComponents: \n" + "Required aliases: \n" + "Optional components: A\n" + "Optional aliases: \n" + "========================================\n" + "Name: set-required-broken-component-from-fallback\n" + "Display name: Installation (fetches optional component from fallback repository)\n" + "Description: Installs component\n" + "Version: 1.0.0\n" + "Components: UnstableComponent\n" + "Required aliases: \n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-required-component-from-fallback\n" + "Display name: Installation (fetches component from fallback repository)\n" + "Description: Installs component\n" + "Version: 1.0.0\nComponents: A\n" + "Required aliases: \n" + "Optional components: \n" + "Optional aliases: \n"); } void cleanup() @@ -76,6 +110,29 @@ private slots: "Optional components: \n" "Optional aliases: \n" "========================================\n" + "Name: set-D\n" + "Display name: Installation D (Unstable)\n" + "Description: Installs missing component D\n" + "Version: 1.0.0\nComponents: D\n" + "Required aliases: \n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-E\n" + "Display name: Installation E (Requires unstable)\n" + "Description: Installs set E\nVersion: 1.0.0\nComponents: \n" + "Required aliases: set-D\n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-F\n" + "Display name: Installation F (Requires alias that refers another unstable)\n" + "Description: Installs set F\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: set-E\nOptional components: \n" + "Optional aliases: \n" + "========================================\n" "Name: set-full\n" "Display name: Full installation\n" "Description: Installs all components\n" @@ -83,7 +140,7 @@ private slots: "Components: C\n" "Required aliases: set-A,set-B\n" "Optional components: \n" - "Optional aliases: \n"), listMethod, QString()); + "Optional aliases: \n") + m_fallbackRepositoryData, listMethod, QString()); VerifyInstaller::verifyListPackagesMessage(core.get(), QLatin1String("\n" "Name: set-A\n" @@ -93,7 +150,7 @@ private slots: "Components: A\n" "Required aliases: \n" "Optional components: \n" - "Optional aliases: \n"), listMethod, QLatin1String("A")); + "Optional aliases: \n"), listMethod, QLatin1String("-A")); } void testAliasSourceWithPriority() @@ -120,6 +177,33 @@ private slots: "Optional components: \n" "Optional aliases: \n" "========================================\n" + "Name: set-D\n" + "Display name: Installation D (Unstable) (priority)\n" + "Description: Installs missing component D\n" + "Version: 1.0.0\n" + "Components: D\n" + "Required aliases: \n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-E\n" + "Display name: Installation E (Requires unstable)\n" + "Description: Installs set E\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: set-D\n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-F\n" + "Display name: Installation F (Requires alias that refers another unstable)\n" + "Description: Installs set F\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: set-E\n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" "Name: set-full\n" "Display name: Full installation (priority)\n" "Description: Installs all components\n" @@ -127,7 +211,7 @@ private slots: "Components: C\n" "Required aliases: set-A,set-B\n" "Optional components: \n" - "Optional aliases: \n"), listMethod, QString()); + "Optional aliases: \n") + m_fallbackRepositoryData, listMethod, QString()); } void testAliasSourceWithVersionCompare() @@ -154,6 +238,33 @@ private slots: "Optional components: \n" "Optional aliases: \n" "========================================\n" + "Name: set-D\n" + "Display name: Installation D (Unstable) (updated)\n" + "Description: Installs missing component D\n" + "Version: 1.2.0\n" + "Components: D\n" + "Required aliases: \n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-E\n" + "Display name: Installation E (Requires unstable)\n" + "Description: Installs set E\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: set-D\n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" + "Name: set-F\n" + "Display name: Installation F (Requires alias that refers another unstable)\n" + "Description: Installs set F\n" + "Version: 1.0.0\n" + "Components: \n" + "Required aliases: set-E\n" + "Optional components: \n" + "Optional aliases: \n" + "========================================\n" "Name: set-full\n" "Display name: Full installation (updated)\n" "Description: Installs all components\n" @@ -161,7 +272,7 @@ private slots: "Components: C\n" "Required aliases: set-A,set-B\n" "Optional components: \n" - "Optional aliases: \n"), listMethod, QString()); + "Optional aliases: \n") + m_fallbackRepositoryData, listMethod, QString()); } void testInstallAlias_data() @@ -201,10 +312,16 @@ private slots: << PackageManagerCore::Success << (QStringList() << "A" << "B"); - QTest::newRow("Alias with optional broken alias (will not install)") + QTest::newRow("Alias with optional broken alias (will install)") << AliasSource(AliasSource::SourceFileFormat::Xml, ":///data/aliases-optional.xml", -1) << (QStringList() << "set-optional-broken") - << PackageManagerCore::Canceled + << PackageManagerCore::Success + << QStringList(); + + QTest::newRow("Alias with optional broken component (will install)") + << AliasSource(AliasSource::SourceFileFormat::Xml, ":///data/aliases-optional.xml", -1) + << (QStringList() << "set-optional-broken-component") + << PackageManagerCore::Success << QStringList(); } @@ -222,7 +339,7 @@ private slots: if (!additionalSource.filename.isEmpty()) core->addAliasSource(additionalSource); - + core->settings().setAllowUnstableComponents(true); QCOMPARE(core->installSelectedComponentsSilently(selectedAliases), status); for (const QString &component : installedComponents) @@ -257,11 +374,58 @@ private slots: core->setCommandLineInstance(true); - QCOMPARE(status, core->installSelectedComponentsSilently(selectedAliases)); + QCOMPARE(core->installSelectedComponentsSilently(selectedAliases), status); + } + + void testInstallAliasWithFallbackRepositories_data() + { + QTest::addColumn<QStringList>("selectedAliases"); + QTest::addColumn<PackageManagerCore::Status>("status"); + QTest::addColumn<QStringList>("installedComponents"); + + QTest::newRow("Component from fallback") + << (QStringList() << "set-required-component-from-fallback") + << PackageManagerCore::Success + << (QStringList() << "A"); + QTest::newRow("Optional component from fallback") + << (QStringList() << "set-optional-component-from-fallback") + << PackageManagerCore::Success + << (QStringList() << "A"); + QTest::newRow("Optional broken component from fallback") + << (QStringList() << "set-optional-broken-component-from-fallback") + << PackageManagerCore::Success + << (QStringList()); + QTest::newRow("Required broke component from fallback") + << (QStringList() << "set-required-broken-component-from-fallback") + << PackageManagerCore::Canceled + << (QStringList()); + } + + void testInstallAliasWithFallbackRepositories() + { + QFETCH(QStringList, selectedAliases); + QFETCH(PackageManagerCore::Status, status); + QFETCH(QStringList, installedComponents); + + QScopedPointer<PackageManagerCore> core(PackageManager::getPackageManagerWithInit(m_installDir)); + + core->setCommandLineInstance(true); + core->settings().setAllowUnstableComponents(true); + QSet<RepositoryCategory> repositoryCategories; + RepositoryCategory repositoryCategory; + repositoryCategory.setEnabled(false); + repositoryCategory.addRepository(Repository::fromUserInput(":///data/repository")); + repositoryCategories.insert(repositoryCategory); + core->settings().addRepositoryCategories(repositoryCategories); + QCOMPARE(core->installSelectedComponentsSilently(selectedAliases), status); + + for (const QString &component : installedComponents) + QVERIFY(core->componentByName(component)->isInstalled()); } private: QString m_installDir; + QString m_fallbackRepositoryData; }; QTEST_GUILESS_MAIN(tst_ComponentAlias) |