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