diff options
author | Katja Marttila <katja.marttila@qt.io> | 2022-11-25 11:23:48 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2022-12-12 09:22:30 +0200 |
commit | 662110e1594788ddc54ec379d61776e1bdd82670 (patch) | |
tree | d8fe6fab8b2bb46fff170affdf421f52ef8797c5 | |
parent | 7af2e1aadbee766eae334fe605dcf59af047bfe1 (diff) |
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 <arttu.tarkiainen@qt.io>
10 files changed, 86 insertions, 7 deletions
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 @@ +<Updates> + <ApplicationName>{AnyApplication}</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Checksum>false</Checksum> + <PackageUpdate> + <Name>componentA</Name> + <DisplayName>Component A</DisplayName> + <Description>Component A.</Description> + <Version>0.1.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <UpdateFile CompressedSize="283" UncompressedSize="101" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <ContentSha1>5</ContentSha1> + </PackageUpdate> + <PackageUpdate> + <Name>componentEssential</Name> + <DisplayName>Component Essential</DisplayName> + <Description>Component Essential</Description> + <Essential>true</Essential> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <UpdateFile UncompressedSize="101" CompressedSize="283" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <ContentSha1>10</ContentSha1> + </PackageUpdate> +</Updates> 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 Binary files differnew file mode 100644 index 000000000..bdbabc7fd --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentA/0.1.0content.7z 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 Binary files differnew file mode 100644 index 000000000..9c86042c0 --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z 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 @@ +<Updates> + <ApplicationName>{AnyApplication}</ApplicationName> + <ApplicationVersion>1.0.0</ApplicationVersion> + <Checksum>false</Checksum> + <PackageUpdate> + <Name>componentA</Name> + <DisplayName>Component A</DisplayName> + <Description>This component does not depend on any other component.</Description> + <Version>1.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>100</SortingPriority> + <UpdateFile OS="Any" CompressedSize="283" UncompressedSize="101"/> + <DownloadableArchives>content.7z</DownloadableArchives> + <ContentSha1>10</ContentSha1> + </PackageUpdate> + <PackageUpdate> + <Name>componentEssential</Name> + <DisplayName>Component Essential</DisplayName> + <Description>Component Essential</Description> + <Essential>true</Essential> + <Version>2.0.0</Version> + <ReleaseDate>2014-08-25</ReleaseDate> + <SortingPriority>80</SortingPriority> + <UpdateFile UncompressedSize="101" CompressedSize="283" OS="Any"/> + <DownloadableArchives>content.7z</DownloadableArchives> + </PackageUpdate> +</Updates> 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 Binary files differnew file mode 100644 index 000000000..46a9f1d1e --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentA/1.0.0content.7z 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 Binary files differnew file mode 100644 index 000000000..435f260ee --- /dev/null +++ b/tests/auto/installer/contentshaupdate/data/repositoryWithEssential/componentEssential/2.0.0content.7z 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 @@ <file>data/repository/componentB/1.0.0content.7z</file> <file>data/repository/componentC/1.0.0content.7z</file> <file>data/repository/componentD/1.0.0content.7z</file> + <file>data/repositoryWithEssential/Updates.xml</file> + <file>data/repositoryWithEssential/componentA/1.0.0content.7z</file> + <file>data/repositoryWithEssential/componentEssential/2.0.0content.7z</file> <file>data/repositoryUpdate/Updates.xml</file> <file>data/repositoryUpdate/componentA/0.1.0content.7z</file> <file>data/repositoryUpdate/componentB/0.1.0content.7z</file> <file>data/repositoryUpdate/componentC/2.0.0content.7z</file> <file>data/repositoryUpdate/componentD/2.0.0content.7z</file> + <file>data/repositoryUpdateWithEssential/Updates.xml</file> + <file>data/repositoryUpdateWithEssential/componentA/0.1.0content.7z</file> + <file>data/repositoryUpdateWithEssential/componentEssential/1.0.0content.7z</file> </qresource> </RCC> 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<QString>("repository"); + QTest::addColumn<QString>("repositoryForUpdate"); QTest::addColumn<QString>("component"); QTest::addColumn<QString>("content"); QTest::addColumn<QString>("updatedContent"); QTest::addColumn<PackageManagerCore::Status>("expectedStatusAfterInstall"); QTest::addColumn<PackageManagerCore::Status>("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); } |