commit 56c4f1373d5060364ad23ce75b15460e78d5ec91
parent df042faf9e377f0943705d18ccd54130dab9e00f
Author: cfillion <cfillion@users.noreply.github.com>
Date: Thu, 26 Nov 2015 23:35:15 -0500
ignore packages unavailable for the current operating system
Diffstat:
3 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/src/database.cpp b/src/database.cpp
@@ -34,7 +34,7 @@ DatabasePtr Database::load(const char *file)
void Database::addCategory(CategoryPtr cat)
{
if(cat->packages().empty())
- throw reapack_error("empty category");
+ return;
m_categories.push_back(cat);
}
@@ -51,7 +51,7 @@ void Category::addPackage(PackagePtr pack)
if(pack->type() == Package::UnknownType)
return; // silently discard unknown package types
else if(pack->versions().empty())
- throw reapack_error("empty package");
+ return;
pack->setCategory(this);
m_packages.push_back(pack);
@@ -78,6 +78,9 @@ Package::Package(const Type type,
void Package::addVersion(VersionPtr ver)
{
+ if(ver->sources().empty())
+ return;
+
m_versions.insert(ver);
}
diff --git a/test/database.cpp b/test/database.cpp
@@ -62,8 +62,11 @@ TEST_CASE("future version", M) {
}
TEST_CASE("add category", M) {
+ VersionPtr ver = make_shared<Version>("1");
+ ver->addSource(make_shared<Source>(Source::GenericPlatform, "google.com"));
+
PackagePtr pack = make_shared<Package>(Package::ScriptType, "a", "b");
- pack->addVersion(make_shared<Version>("1"));
+ pack->addVersion(ver);
CategoryPtr cat = make_shared<Category>("a");
cat->addPackage(pack);
@@ -76,21 +79,19 @@ TEST_CASE("add category", M) {
REQUIRE(db.categories().size() == 1);
}
-TEST_CASE("add empty category", M) {
+TEST_CASE("drop empty category", M) {
Database db;
+ db.addCategory(make_shared<Category>("a"));
- try {
- db.addCategory(make_shared<Category>("a"));
- FAIL();
- }
- catch(const reapack_error &e) {
- REQUIRE(string(e.what()) == "empty category");
- }
+ REQUIRE(db.categories().empty());
}
TEST_CASE("add a package", M) {
+ VersionPtr ver = make_shared<Version>("1");
+ ver->addSource(make_shared<Source>(Source::GenericPlatform, "google.com"));
+
PackagePtr pack = make_shared<Package>(Package::ScriptType, "a", "b");
- pack->addVersion(make_shared<Version>("1"));
+ pack->addVersion(ver);
Category cat("a");
CHECK(cat.packages().size() == 0);
@@ -102,16 +103,11 @@ TEST_CASE("add a package", M) {
REQUIRE(pack->category() == &cat);
}
-TEST_CASE("add empty package", M) {
+TEST_CASE("drop empty package", M) {
Category cat("a");
+ cat.addPackage(make_shared<Package>(Package::ScriptType, "a", "b"));
- try {
- cat.addPackage(make_shared<Package>(Package::ScriptType, "a", "b"));
- FAIL();
- }
- catch(const reapack_error &e) {
- REQUIRE(string(e.what()) == "empty package");
- }
+ REQUIRE(cat.packages().empty());
}
TEST_CASE("drop unknown package", M) {
@@ -165,12 +161,27 @@ TEST_CASE("package versions are sorted", M) {
Package pack(Package::ScriptType, "a", "b");
CHECK(pack.versions().size() == 0);
- pack.addVersion(make_shared<Version>("1"));
+ SourcePtr source = make_shared<Source>(Source::GenericPlatform, "google.com");
+
+ VersionPtr final = make_shared<Version>("1");
+ final->addSource(source);
+
+ VersionPtr alpha = make_shared<Version>("0.1");
+ alpha->addSource(source);
+
+ pack.addVersion(final);
CHECK(pack.versions().size() == 1);
- pack.addVersion(make_shared<Version>("0.1"));
+ pack.addVersion(alpha);
CHECK(pack.versions().size() == 2);
- REQUIRE(pack.version(0)->name() == "0.1");
- REQUIRE(pack.version(1)->name() == "1");
+ REQUIRE(pack.version(0) == alpha);
+ REQUIRE(pack.version(1) == final);
+}
+
+TEST_CASE("drop empty version", M) {
+ Package pack(Package::ScriptType, "a", "b");
+ pack.addVersion(make_shared<Version>("1"));
+
+ REQUIRE(pack.versions().empty());
}
diff --git a/test/database_v1.cpp b/test/database_v1.cpp
@@ -27,13 +27,9 @@ TEST_CASE("invalid category tag", M) {
}
TEST_CASE("invalid package tag", M) {
- try {
- Database::load(DBPATH "wrong_package_tag.xml");
- FAIL();
- }
- catch(const reapack_error &e) {
- REQUIRE(string(e.what()) == "empty category");
- }
+ DatabasePtr db = Database::load(DBPATH "wrong_package_tag.xml");
+ REQUIRE(db->categories().empty());
+
}
TEST_CASE("null package name", M) {
@@ -66,13 +62,9 @@ TEST_CASE("null author", M) {
}
TEST_CASE("invalid version tag", M) {
- try {
- Database::load(DBPATH "wrong_version_tag.xml");
- FAIL();
- }
- catch(const reapack_error &e) {
- REQUIRE(string(e.what()) == "empty package");
- }
+ DatabasePtr db = Database::load(DBPATH "wrong_version_tag.xml");
+
+ REQUIRE(db->categories().empty());
}
TEST_CASE("null package version", M) {