diff --git a/src/ahriman/models/package.py b/src/ahriman/models/package.py index 4a74a893..0b08c9ed 100644 --- a/src/ahriman/models/package.py +++ b/src/ahriman/models/package.py @@ -205,7 +205,7 @@ class Package(LazyLogging): package = pacman.handle.load_pkg(str(path)) description = PackageDescription.from_package(package, path) return cls( - base=package.base, + base=package.base or package.name, version=package.version, remote=RemoteSource(source=PackageSource.Archive), packages={package.name: description}, diff --git a/tests/ahriman/models/test_package.py b/tests/ahriman/models/test_package.py index d72eec1e..3820c205 100644 --- a/tests/ahriman/models/test_package.py +++ b/tests/ahriman/models/test_package.py @@ -2,7 +2,7 @@ import copy from pathlib import Path from pytest_mock import MockerFixture -from unittest.mock import MagicMock, call as MockCall +from unittest.mock import MagicMock, PropertyMock, call as MockCall from ahriman.core.alpm.pacman import Pacman from ahriman.core.configuration import Configuration @@ -163,6 +163,23 @@ def test_from_archive(package_ahriman: Package, pyalpm_handle: MagicMock, mocker assert generated == package_ahriman +def test_from_archive_empty_base(package_ahriman: Package, pyalpm_package_ahriman: MagicMock, + mocker: MockerFixture) -> None: + """ + must construct package with empty base from alpm library + """ + pyalpm_handle = MagicMock() + type(pyalpm_package_ahriman).base = PropertyMock(return_value=None) + pyalpm_handle.handle.load_pkg.return_value = pyalpm_package_ahriman + + mocker.patch("ahriman.models.package_description.PackageDescription.from_package", + return_value=package_ahriman.packages[package_ahriman.base]) + generated = Package.from_archive(Path("path"), pyalpm_handle) + generated.remote = package_ahriman.remote + + assert generated == package_ahriman + + def test_from_aur(package_ahriman: Package, aur_package_ahriman: AURPackage, mocker: MockerFixture) -> None: """ must construct package from aur