commit 5af2b4e04c261bdcbb2b3073f601ac1c9c93c421
parent 43b1524218588d7ad4c1501e471e4b3e66d87165
Author: cfillion <cfillion@users.noreply.github.com>
Date: Tue, 12 Sep 2017 16:01:14 -0400
add tests for Receipt
Diffstat:
3 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/src/receipt.cpp b/src/receipt.cpp
@@ -22,7 +22,7 @@
using namespace std;
Receipt::Receipt()
- : m_enabled(false), m_needRestart(false)
+ : m_needRestart(false)
{
}
diff --git a/src/receipt.hpp b/src/receipt.hpp
@@ -61,7 +61,6 @@ public:
bool hasErrors() const { return !m_errors.empty(); }
private:
- bool m_enabled;
bool m_needRestart;
std::vector<InstallTicket> m_installs;
diff --git a/test/receipt.cpp b/test/receipt.cpp
@@ -0,0 +1,76 @@
+#include "helper.hpp"
+
+#include <receipt.hpp>
+
+#include <index.hpp>
+
+using namespace std;
+
+static constexpr const char *M = "[receipt]";
+
+#define MAKE_VERSION \
+ IndexPtr ri = make_shared<Index>("Index Name"); \
+ Category cat("Category Name", ri.get()); \
+ Package pkg(Package::ScriptType, "Package Name", &cat); \
+ Version ver("1.0", &pkg);
+
+TEST_CASE("set isRestartNeeded", M) {
+ Receipt r;
+ REQUIRE_FALSE(r.isRestartNeeded());
+ r.setRestartNeeded(true);
+ REQUIRE(r.isRestartNeeded());
+}
+
+TEST_CASE("non-empty receipt", M) {
+ MAKE_VERSION;
+
+ Receipt r;
+ REQUIRE(r.empty());
+
+ SECTION("install")
+ r.addInstall({&ver, {}});
+
+ SECTION("removal")
+ r.addRemoval(Path("hello/world"));
+
+ SECTION("export")
+ r.addExport(Path("hello/world"));
+
+ SECTION("error")
+ r.addError({"message", "context"});
+
+ REQUIRE_FALSE(r.empty());
+}
+
+TEST_CASE("install scratch or downgrade", M) {
+ MAKE_VERSION;
+ Receipt r;
+
+ REQUIRE(r.installs().empty());
+
+ SECTION("install from stratch")
+ r.addInstall({&ver, {}});
+
+ SECTION("downgrade") {
+ Registry::Entry entry{1};
+ entry.version = VersionName("2.0");
+ r.addInstall({&ver, entry});
+ }
+
+ REQUIRE(r.installs().size() == 1);
+ REQUIRE(r.updates().empty());
+}
+
+TEST_CASE("detect update tickets", M) {
+ MAKE_VERSION;
+
+ Receipt r;
+ REQUIRE(r.updates().empty());
+
+ Registry::Entry entry{1};
+ entry.version = VersionName("0.9");
+ r.addInstall({&ver, entry});
+
+ REQUIRE(r.updates().size() == 1);
+ REQUIRE(r.installs().empty());
+}