diff options
author | Kai Koehne <kai.koehne@theqtcompany.com> | 2014-10-23 09:30:11 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@theqtcompany.com> | 2014-10-28 15:52:38 +0100 |
commit | 71490cfe450165271a78e519d24ed39217bc440e (patch) | |
tree | f7c7989966d0e200eb327e1a95e223fed83f03cf | |
parent | f99edc5d88b8957b36f95dea08b91e141e328698 (diff) |
Fix calculation of required disk space
Do not count in already installed components when calculating the
required disk space.
Task-number: QTBUG-39308
Change-Id: Idff52da33d3e42dd156322115d5c489ba13a0945
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 4 | ||||
-rw-r--r-- | tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp | 36 |
2 files changed, 38 insertions, 2 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 82f852faf..2b83dc54f 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -552,8 +552,8 @@ quint64 PackageManagerCore::requiredDiskSpace() const { quint64 result = 0; - foreach (QInstaller::Component *component, rootComponents()) - result += component->updateUncompressedSize(); + foreach (QInstaller::Component *component, orderedComponentsToInstall()) + result += size(component, scUncompressedSize); return result; } diff --git a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp index 8a7af4a0b..01c56caea 100644 --- a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp +++ b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp @@ -145,6 +145,42 @@ private slots: QVERIFY(!QDir(testDirectory).exists()); ProgressCoordinator::instance()->reset(); } + + void testRequiredDiskSpace() + { + // test installer + PackageManagerCore core(MagicInstallerMarker); + + DummyComponent *root = new DummyComponent(&core); + root->setValue(scName, "root"); + root->setValue(scUncompressedSize, QString::number(1000)); + core.appendRootComponent(root); + + DummyComponent *child1 = new DummyComponent(&core); + child1->setValue(scName, "root.child1"); + child1->setValue(scUncompressedSize, QString::number(1500)); + root->appendComponent(child1); + + DummyComponent *child2 = new DummyComponent(&core); + child2->setValue(scName, "root.child2"); + child2->setValue(scUncompressedSize, QString::number(250)); + root->appendComponent(child2); + + // install root, child1 (child2 remains uninstalled) + root->setUninstalled(); + child1->setUninstalled(); + child2->setInstalled(); + core.calculateComponentsToInstall(); + QCOMPARE(core.requiredDiskSpace(), 2500ULL); + + // additionally install child2 + root->setInstalled(); + child1->setInstalled(); + child2->setUninstalled(); + core.componentsToInstallNeedsRecalculation(); + core.calculateComponentsToInstall(); + QCOMPARE(core.requiredDiskSpace(), 250ULL); + } }; |