reapack

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

commit 782c55e67275cfb4ba1008f2f91efa89e64d83d1
parent 9484a925da5630bbee0f6cb71a91e0485c812097
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Thu, 26 Nov 2015 21:43:29 -0500

silently discard unknown package types

Diffstat:
Msrc/database.cpp | 7+++----
Mtest/database.cpp | 17+++++++----------
Mtest/database_v1.cpp | 4+---
3 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/src/database.cpp b/src/database.cpp @@ -48,7 +48,9 @@ Category::Category(const std::string &name) void Category::addPackage(PackagePtr pack) { - if(pack->versions().empty()) + if(pack->type() == Package::UnknownType) + return; // silently discard unknown package types + else if(pack->versions().empty()) throw reapack_error("empty package"); pack->setCategory(this); @@ -67,9 +69,6 @@ Package::Package(const Type type, const std::string &name, const std::string &author) : m_category(0), m_type(type), m_name(name), m_author(author) { - if(m_type == Package::UnknownType) - throw reapack_error("unsupported package type"); - if(m_name.empty()) throw reapack_error("empty package name"); diff --git a/test/database.cpp b/test/database.cpp @@ -114,6 +114,13 @@ TEST_CASE("add empty package", M) { } } +TEST_CASE("drop unknown package", M) { + Category cat("a"); + cat.addPackage(make_shared<Package>(Package::UnknownType, "a", "b")); + + REQUIRE(cat.packages().size() == 0); +} + TEST_CASE("package type from string", M) { SECTION("unknown") { REQUIRE(Package::convertType("yoyo") == Package::UnknownType); @@ -134,16 +141,6 @@ TEST_CASE("empty category name", M) { } } -TEST_CASE("unknown package type", M) { - try { - Package pack(Package::UnknownType, "a", "b"); - FAIL(); - } - catch(const reapack_error &e) { - REQUIRE(string(e.what()) == "unsupported package type"); - } -} - TEST_CASE("empty package name", M) { try { Package pack(Package::ScriptType, string(), "a"); diff --git a/test/database_v1.cpp b/test/database_v1.cpp @@ -49,10 +49,9 @@ TEST_CASE("null package name", M) { TEST_CASE("null package type", M) { try { Database::load(DBPATH "missing_type.xml"); - FAIL(); } catch(const reapack_error &e) { - REQUIRE(string(e.what()) == "unsupported package type"); + // no segfault -> test passes! } } @@ -76,7 +75,6 @@ TEST_CASE("invalid version tag", M) { } } - TEST_CASE("null package version", M) { try { Database::load(DBPATH "missing_version.xml");