From 662110e1594788ddc54ec379d61776e1bdd82670 Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Fri, 25 Nov 2022 11:23:48 +0200 Subject: Add test for essential content sha update Also clearing the foundEssentialUpdate flag in clearAllComponentLists() function so that unit tests core status will match. As the unit tests are not done to fully cleared core the foundEssentialUpdate was set to true although the update was done and other components were installed. Task-number: QTIFW-2732 Change-Id: I9b6754595b4b20b1ddc95d7587d98474a6967add Reviewed-by: Arttu Tarkiainen --- src/libs/installer/packagemanagercore_p.cpp | 2 ++ src/libs/installer/packagemanagercore_p.h | 2 +- .../data/repositoryUpdateWithEssential/Updates.xml | 28 +++++++++++++++++++++ .../componentA/0.1.0content.7z | Bin 0 -> 243 bytes .../componentEssential/1.0.0content.7z | Bin 0 -> 243 bytes .../data/repositoryWithEssential/Updates.xml | 27 ++++++++++++++++++++ .../componentA/1.0.0content.7z | Bin 0 -> 243 bytes .../componentEssential/2.0.0content.7z | Bin 0 -> 227 bytes tests/auto/installer/contentshaupdate/settings.qrc | 6 +++++ .../contentshaupdate/tst_contentshaupdate.cpp | 28 ++++++++++++++++----- 10 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/Updates.xml create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentA/0.1.0content.7z create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryWithEssential/Updates.xml create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentA/1.0.0content.7z create mode 100644 tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentEssential/2.0.0content.7z diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 3a30244f2..9b77dd657 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -497,6 +497,7 @@ void PackageManagerCorePrivate::clearAllComponentLists() m_componentsToReplaceAllMode.clear(); m_componentsToInstallCalculated = false; + m_foundEssentialUpdate = false; qDeleteAll(toDelete); cleanUpComponentEnvironment(); @@ -522,6 +523,7 @@ void PackageManagerCorePrivate::clearUpdaterComponentLists() m_componentsToReplaceUpdaterMode.clear(); m_componentsToInstallCalculated = false; + m_foundEssentialUpdate = false; qDeleteAll(usedComponents); cleanUpComponentEnvironment(); diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index 03047240c..d45e2f219 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -294,7 +294,7 @@ private: int m_magicMarkerSupplement; bool m_componentsToInstallCalculated; - bool m_foundEssentialUpdate;; + bool m_foundEssentialUpdate; mutable ScriptEngine *m_componentScriptEngine; mutable ScriptEngine *m_controlScriptEngine; diff --git a/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/Updates.xml b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/Updates.xml new file mode 100644 index 000000000..fe5dc4dec --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/Updates.xml @@ -0,0 +1,28 @@ + + {AnyApplication} + 1.0.0 + false + + componentA + Component A + Component A. + 0.1.0 + 2014-08-25 + 100 + + content.7z + 5 + + + componentEssential + Component Essential + Component Essential + true + 1.0.0 + 2014-08-25 + 80 + + content.7z + 10 + + diff --git a/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentA/0.1.0content.7z b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentA/0.1.0content.7z new file mode 100644 index 000000000..bdbabc7fd Binary files /dev/null and b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentA/0.1.0content.7z differ diff --git a/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z new file mode 100644 index 000000000..9c86042c0 Binary files /dev/null and b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z differ diff --git a/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/Updates.xml b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/Updates.xml new file mode 100644 index 000000000..f76c03faa --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/Updates.xml @@ -0,0 +1,27 @@ + + {AnyApplication} + 1.0.0 + false + + componentA + Component A + This component does not depend on any other component. + 1.0.0 + 2014-08-25 + 100 + + content.7z + 10 + + + componentEssential + Component Essential + Component Essential + true + 2.0.0 + 2014-08-25 + 80 + + content.7z + + diff --git a/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentA/1.0.0content.7z b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentA/1.0.0content.7z new file mode 100644 index 000000000..46a9f1d1e Binary files /dev/null and b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentA/1.0.0content.7z differ diff --git a/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentEssential/2.0.0content.7z b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentEssential/2.0.0content.7z new file mode 100644 index 000000000..435f260ee Binary files /dev/null and b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentEssential/2.0.0content.7z differ diff --git a/tests/auto/installer/contentshaupdate/settings.qrc b/tests/auto/installer/contentshaupdate/settings.qrc index a5d045f46..e3426be92 100644 --- a/tests/auto/installer/contentshaupdate/settings.qrc +++ b/tests/auto/installer/contentshaupdate/settings.qrc @@ -5,10 +5,16 @@ data/repository/componentB/1.0.0content.7z data/repository/componentC/1.0.0content.7z data/repository/componentD/1.0.0content.7z + data/repositoryWithEssential/Updates.xml + data/repositoryWithEssential/componentA/1.0.0content.7z + data/repositoryWithEssential/componentEssential/2.0.0content.7z data/repositoryUpdate/Updates.xml data/repositoryUpdate/componentA/0.1.0content.7z data/repositoryUpdate/componentB/0.1.0content.7z data/repositoryUpdate/componentC/2.0.0content.7z data/repositoryUpdate/componentD/2.0.0content.7z + data/repositoryUpdateWithEssential/Updates.xml + data/repositoryUpdateWithEssential/componentA/0.1.0content.7z + data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z diff --git a/tests/auto/installer/contentshaupdate/tst_contentshaupdate.cpp b/tests/auto/installer/contentshaupdate/tst_contentshaupdate.cpp index d8d2f5377..5d282fe38 100644 --- a/tests/auto/installer/contentshaupdate/tst_contentshaupdate.cpp +++ b/tests/auto/installer/contentshaupdate/tst_contentshaupdate.cpp @@ -58,34 +58,50 @@ private slots: void updateWithContentSha1_data() { + QTest::addColumn("repository"); + QTest::addColumn("repositoryForUpdate"); QTest::addColumn("component"); QTest::addColumn("content"); QTest::addColumn("updatedContent"); QTest::addColumn("expectedStatusAfterInstall"); QTest::addColumn("expectedStatusAfterUpdate"); - QTest::newRow("ContentSha1Change") << "componentA" << "1.0.0content.txt" << "0.1.0content.txt" << PackageManagerCore::Success << PackageManagerCore::Success; - QTest::newRow("NewContentSha1") << "componentB" << "1.0.0content.txt" << "0.1.0content.txt" << PackageManagerCore::Success << PackageManagerCore::Success; - QTest::newRow("SameContentSha1") << "componentC" << "1.0.0content.txt" << "1.0.0content.txt" << PackageManagerCore::Success << PackageManagerCore::Canceled; - QTest::newRow("Sha1RemovedFromRepo") << "componentD" << "1.0.0content.txt" << "2.0.0content.txt" << PackageManagerCore::Success << PackageManagerCore::Success; + QTest::newRow("Sha1UpdateForEssential") + << ":///data/repositoryWithEssential" << ":///data/repositoryUpdateWithEssential" + << "componentEssential" << "2.0.0content.txt" << "1.0.0content.txt" + << PackageManagerCore::Success << PackageManagerCore::EssentialUpdated; + QTest::newRow("ContentSha1Change") + << ":///data/repository" << ":///data/repositoryUpdate" << "componentA" << "1.0.0content.txt" << "0.1.0content.txt" + << PackageManagerCore::Success << PackageManagerCore::Success; + QTest::newRow("NewContentSha1") + << ":///data/repository" << ":///data/repositoryUpdate" << "componentB" << "1.0.0content.txt" << "0.1.0content.txt" + << PackageManagerCore::Success << PackageManagerCore::Success; + QTest::newRow("SameContentSha1") + << ":///data/repository" << ":///data/repositoryUpdate" << "componentC" << "1.0.0content.txt" << "1.0.0content.txt" + << PackageManagerCore::Success << PackageManagerCore::Canceled; + QTest::newRow("Sha1RemovedFromRepo") + << ":///data/repository" << ":///data/repositoryUpdate" << "componentD" << "1.0.0content.txt" << "2.0.0content.txt" + << PackageManagerCore::Success << PackageManagerCore::Success; } void updateWithContentSha1() { + QFETCH(QString, repository); + QFETCH(QString, repositoryForUpdate); QFETCH(QString, component); QFETCH(QString, content); QFETCH(QString, updatedContent); QFETCH(PackageManagerCore::Status, expectedStatusAfterInstall); QFETCH(PackageManagerCore::Status, expectedStatusAfterUpdate); - setRepository(":///data/repository"); + setRepository(repository); QCOMPARE(expectedStatusAfterInstall, core->installSelectedComponentsSilently(QStringList() << component)); QCOMPARE(expectedStatusAfterInstall, core->status()); VerifyInstaller::verifyInstallerResources(m_installDir, component, content); core->commitSessionOperations(); core->setPackageManager(); - setRepository(":///data/repositoryUpdate"); + setRepository(repositoryForUpdate); QCOMPARE(expectedStatusAfterUpdate, core->updateComponentsSilently(QStringList())); VerifyInstaller::verifyInstallerResources(m_installDir, component, updatedContent); } -- cgit v1.2.3