From cb159728b68e7f0d799e77570fb1d92b86abb6ce Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Thu, 28 May 2020 13:48:26 +0300 Subject: CLI: Do not run updater if there are no updates for selected components Task-number: QTIFW-1818 Change-Id: I13dceeeaf294c689a90fbe5fe74586d7a117ea50 Reviewed-by: Katja Marttila --- src/libs/installer/packagemanagercore.cpp | 10 ++++++++-- .../auto/installer/commandlineupdate/tst_commandlineupdate.cpp | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 8f282bf9d..885604135 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -2272,11 +2272,11 @@ bool PackageManagerCore::updateComponentsSilently(const QStringList &componentsT essentialUpdatesFound = true; } if (!essentialUpdatesFound) { - int componentToUpdateCount = componentsToUpdate.count(); + const bool userSelectedComponents = !componentsToUpdate.isEmpty(); QList componentsToBeUpdated; //Mark components to be updated foreach (Component *comp, componentList) { - if (componentToUpdateCount == 0) { // No components given, update all + if (!userSelectedComponents) { // No components given, update all comp->setCheckState(Qt::Checked); } else { //Collect the componets to list which we want to update @@ -2288,6 +2288,12 @@ bool PackageManagerCore::updateComponentsSilently(const QStringList &componentsT } } } + // No updates for selected components, do not run updater + if (userSelectedComponents && componentsToBeUpdated.isEmpty()) { + qCDebug(QInstaller::lcInstallerInstallLog) + << "No updates available for selected components."; + return false; + } foreach (Component *componentToUpdate, componentsToBeUpdated) componentToUpdate->setCheckState(Qt::Checked); } diff --git a/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp index 78ee7b5b6..bf6d8729a 100644 --- a/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp +++ b/tests/auto/installer/commandlineupdate/tst_commandlineupdate.cpp @@ -81,6 +81,12 @@ private slots: << "installcontentB.txt" << "installcontentD.txt"); } + void testUpdateNoUpdatesForSelectedPackage() + { + setRepository(":///data/installPackagesRepositoryUpdate"); + QVERIFY(!core->updateComponentsSilently(QStringList() << "componentInvalid")); + } + void testUpdateTwoPackageSilently() { setRepository(":///data/installPackagesRepository"); -- cgit v1.2.3