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:
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"};