From 30f2a6b89bedfc5bfda5bba07032d23169230e4e Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Mon, 3 Jan 2022 17:08:13 +0200 Subject: Fix replacing components with element The QHash dictionary used to store component objects before building the component tree may include keys that are either original names or overridden tree names of components. Only the former were handled when removing replaced components from the QHash. Task-number: QTIFW-2455 Change-Id: I340aa61c724da0da62d7e5a875a38b6ecc0eceb5 Reviewed-by: Katja Marttila --- .../auto/installer/treename/data/repository/Updates.xml | 16 ++++++++++++++++ tests/auto/installer/treename/tst_treename.cpp | 12 ++++++++++++ 2 files changed, 28 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/installer/treename/data/repository/Updates.xml b/tests/auto/installer/treename/data/repository/Updates.xml index 1ab3caa23..295f076dd 100644 --- a/tests/auto/installer/treename/data/repository/Updates.xml +++ b/tests/auto/installer/treename/data/repository/Updates.xml @@ -116,4 +116,20 @@ content.7z 3ca69d6bb062c4442fdb20fe0e62bb0f04e8a419 + + componentE + Component E + Component with tree name, is replaced by other component. + 1.0.0 + 2022-01-01 + EToNewRoot + + + componentF + Component F + Component that replaces other component + 1.0.0 + 2022-01-01 + componentE + diff --git a/tests/auto/installer/treename/tst_treename.cpp b/tests/auto/installer/treename/tst_treename.cpp index 58d005848..2945d499a 100644 --- a/tests/auto/installer/treename/tst_treename.cpp +++ b/tests/auto/installer/treename/tst_treename.cpp @@ -47,6 +47,8 @@ private slots: void moveToExistingItemAllowUnstableComponents(); void moveToExistingItemNoUnstableComponents(); + void replaceComponentWithTreeName(); + void init(); void cleanup(); @@ -132,6 +134,16 @@ void tst_TreeName::moveToExistingItemNoUnstableComponents() QVERIFY(!core->componentByName("componentB")); } +void tst_TreeName::replaceComponentWithTreeName() +{ + QScopedPointer 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::init() { m_installDir = QInstaller::generateTemporaryFileName(); -- cgit v1.2.3