reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 553b6a564541b00643224795fd48528ede71a903
parent 0f2c9fae42aac2f509b609be15052588978988b0
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Fri, 10 Nov 2017 15:33:53 -0500

refresh the package browser when toggling the pinned status (another v1.2rc1 regression)

Diffstat:
Msrc/receipt.hpp | 22++++++++++++----------
Msrc/report.cpp | 2+-
Msrc/task.cpp | 1+
Mtest/receipt.cpp | 20++++++++++++++++----
4 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/src/receipt.hpp b/src/receipt.hpp @@ -36,16 +36,17 @@ typedef std::shared_ptr<const Index> IndexPtr; class Receipt { public: enum Flag { - NoFlag = 0, - RestartNeededFlag = 1<<0, - InstalledFlag = 1<<1, - RemovedFlag = 1<<2, - ExportedFlag = 1<<3, - ErrorFlag = 1<<4, - IndexChangedFlag = 1<<5, - - PackageChanged = InstalledFlag | RemovedFlag, - RefreshBrowser = PackageChanged | IndexChangedFlag, + NoFlag = 0, + ErrorFlag = 1<<0, + RestartNeededFlag = 1<<1, + IndexChangedFlag = 1<<2, + PackageChangedFlag = 1<<3, + InstalledFlag = 1<<4, + RemovedFlag = 1<<5, + ExportedFlag = 1<<6, + + InstalledOrRemoved = InstalledFlag | RemovedFlag, + RefreshBrowser = IndexChangedFlag | PackageChangedFlag | InstalledOrRemoved, }; Receipt(); @@ -55,6 +56,7 @@ public: bool empty() const; void setIndexChanged() { m_flags |= IndexChangedFlag; } + void setPackageChanged() { m_flags |= PackageChangedFlag; } void addInstall(const Version *, const Registry::Entry &); void addRemoval(const Path &p); void addExport(const Path &p); diff --git a/src/report.cpp b/src/report.cpp @@ -74,7 +74,7 @@ void Report::updateLabel() label = "Operation failed. The following error(s) occured:"; else if(m_receipt->test(Receipt::ErrorFlag)) label = "The operation was partially completed (one or more errors occured):"; - else if(m_receipt->test(Receipt::PackageChanged)) + else if(m_receipt->test(Receipt::InstalledOrRemoved)) label = "All done! Description of the changes:"; else label = "Operation completed successfully!"; diff --git a/src/task.cpp b/src/task.cpp @@ -68,4 +68,5 @@ PinTask::PinTask(const Registry::Entry &re, const bool pin, Transaction *tx) void PinTask::commit() { tx()->registry()->setPinned(m_entry, m_pin); + tx()->receipt()->setPackageChanged(); } diff --git a/test/receipt.cpp b/test/receipt.cpp @@ -47,25 +47,27 @@ TEST_CASE("set receipt flags", M) { Version ver("1.0", &pkg); r.addInstall(&ver, {}); - CHECK(r.test(Receipt::PackageChanged)); + CHECK(r.test(Receipt::InstalledOrRemoved)); + CHECK_FALSE(r.test(Receipt::PackageChangedFlag)); expected = Receipt::InstalledFlag; } SECTION("removal") { r.addRemoval(Path("hello/world")); - CHECK(r.test(Receipt::PackageChanged)); + CHECK(r.test(Receipt::InstalledOrRemoved)); + CHECK_FALSE(r.test(Receipt::PackageChangedFlag)); expected = Receipt::RemovedFlag; } SECTION("export") { r.addExport(Path("hello/world")); - CHECK_FALSE(r.test(Receipt::PackageChanged)); + CHECK_FALSE(r.test(Receipt::InstalledOrRemoved)); expected = Receipt::ExportedFlag; } SECTION("error") { r.addError({"message", "context"}); - CHECK_FALSE(r.test(Receipt::PackageChanged)); + CHECK_FALSE(r.test(Receipt::PackageChangedFlag)); expected = Receipt::ErrorFlag; } @@ -102,6 +104,16 @@ TEST_CASE("set index changed flag", M) { REQUIRE(r.test(Receipt::RefreshBrowser)); } +TEST_CASE("set package changed flag", M) { + Receipt r; + REQUIRE_FALSE(r.test(Receipt::PackageChangedFlag)); + + r.setPackageChanged(); + REQUIRE(r.test(Receipt::PackageChangedFlag)); + REQUIRE(r.test(Receipt::RefreshBrowser)); + REQUIRE_FALSE(r.test(Receipt::InstalledOrRemoved)); +} + TEST_CASE("format receipt page title", M) { SECTION("singular") { ReceiptPage page{vector<int>{1}, "Singular", "Plural"};