Ensure case of empty package name is handled in find/remove functions
This commit is contained in:
parent
8deeb0a82b
commit
da19885d8b
|
@ -493,6 +493,9 @@ StorageID Database::findBasePackageWithID(const std::string &packageName, Packag
|
||||||
|
|
||||||
void Database::removePackage(const std::string &packageName)
|
void Database::removePackage(const std::string &packageName)
|
||||||
{
|
{
|
||||||
|
if (packageName.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const auto lock = std::unique_lock(m_storage->updateMutex);
|
const auto lock = std::unique_lock(m_storage->updateMutex);
|
||||||
auto txn = m_storage->packages.getRWTransaction();
|
auto txn = m_storage->packages.getRWTransaction();
|
||||||
const auto [packageID, package] = m_storage->packageCache.retrieve(*m_storage, &txn, packageName);
|
const auto [packageID, package] = m_storage->packageCache.retrieve(*m_storage, &txn, packageName);
|
||||||
|
|
|
@ -228,7 +228,10 @@ void DataTests::testPackageSearch()
|
||||||
{
|
{
|
||||||
setupPackages();
|
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(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 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);
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("package from first db returned second, cached object returned", m_pkg3, pkgs.back().pkg);
|
||||||
|
|
Loading…
Reference in New Issue