Ensure case of empty package name is handled in find/remove functions

This commit is contained in:
Martchus 2023-12-19 21:41:38 +01:00
parent 8deeb0a82b
commit da19885d8b
2 changed files with 7 additions and 1 deletions

View File

@ -493,6 +493,9 @@ StorageID Database::findBasePackageWithID(const std::string &packageName, Packag
void Database::removePackage(const std::string &packageName)
{
if (packageName.empty()) {
return;
}
const auto lock = std::unique_lock(m_storage->updateMutex);
auto txn = m_storage->packages.getRWTransaction();
const auto [packageID, package] = m_storage->packageCache.retrieve(*m_storage, &txn, packageName);

View File

@ -228,7 +228,10 @@ void DataTests::testPackageSearch()
{
setupPackages();
auto pkgs = m_config.findPackages("foo"sv);
auto pkgs = m_config.findPackages(std::string_view());
CPPUNIT_ASSERT_EQUAL_MESSAGE("no results for package with empty name", 0_st, pkgs.size());
pkgs = m_config.findPackages("foo"sv);
CPPUNIT_ASSERT_EQUAL(2_st, pkgs.size());
CPPUNIT_ASSERT_EQUAL_MESSAGE("package from first db returned first, cached object returned", m_pkg1, pkgs.front().pkg);
CPPUNIT_ASSERT_EQUAL_MESSAGE("package from first db returned second, cached object returned", m_pkg3, pkgs.back().pkg);