reapack

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

commit e333e5d4f3d24264dfc109d4018ccd5744176f06
parent bc06027eb2eaa819152f63b1173dfe9d4e992ac2
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Wed, 20 Jan 2016 00:54:10 -0500

prevent conflicts between already installed packages

Diffstat:
Msrc/registry.cpp | 2+-
Mtest/registry.cpp | 24++++++++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/registry.cpp b/src/registry.cpp @@ -83,7 +83,7 @@ void Registry::migrate() "CREATE TABLE files (" " id INTEGER PRIMARY KEY," " entry INTEGER NOT NULL," - " path TEXT NOT NULL," + " path TEXT UNIQUE NOT NULL," " FOREIGN KEY(entry) REFERENCES entries(id)" ");" ); diff --git a/test/registry.cpp b/test/registry.cpp @@ -4,6 +4,7 @@ #include <registry.hpp> +#include <errors.hpp> #include <index.hpp> #include <package.hpp> #include <remote.hpp> @@ -106,3 +107,26 @@ TEST_CASE("forget registry entry", M) { REQUIRE(afterForget.status == Registry::Uninstalled); REQUIRE(afterForget.version == 0); } + +TEST_CASE("enforce unique files", M) { + Registry reg; + + { + MAKE_PACKAGE + reg.push(ver); + } + + RemoteIndex ri("Remote Name"); + Category cat("Hello", &ri); + Package pkg(Package::ScriptType, "Duplicate Package", &cat); + Version *ver = new Version("1.0", &pkg); + Source *src = new Source(Source::GenericPlatform, "file", "url", ver); + ver->addSource(src); + pkg.addVersion(ver); + + try { + reg.push(ver); + FAIL("duplicate was accepted"); + } + catch(const reapack_error &) {} +}