mirror of
https://github.com/kiviktnm/decman.git
synced 2026-09-19 12:08:28 +00:00
89 lines
2.3 KiB
Python
89 lines
2.3 KiB
Python
import pyalpm
|
|
import pytest
|
|
from decman.plugins.aur import AurPacmanInterface
|
|
from decman.plugins.pacman import PacmanInterface
|
|
|
|
|
|
class FakePackage:
|
|
def __init__(self, name: str, is_explicit: bool, required_by: list[str]):
|
|
self.name = name
|
|
self.reason = pyalpm.PKG_REASON_EXPLICIT if is_explicit else pyalpm.PKG_REASON_DEPEND
|
|
self.required_by = required_by
|
|
self.provides = [name]
|
|
|
|
def compute_requiredby(self):
|
|
return self.required_by
|
|
|
|
|
|
class FakeDB:
|
|
def __init__(self, pkgcache: list[FakePackage]):
|
|
self.pkgcache = pkgcache
|
|
|
|
|
|
class FakePyalpmHandle:
|
|
def __init__(self):
|
|
pass
|
|
|
|
def get_syncdbs(self):
|
|
return [
|
|
FakeDB(
|
|
[
|
|
FakePackage("a", True, []),
|
|
FakePackage("b", False, ["a"]),
|
|
FakePackage("c", False, ["b"]),
|
|
FakePackage("d", False, []),
|
|
FakePackage("e", False, ["f"]),
|
|
FakePackage("f", False, ["g"]),
|
|
FakePackage("g", False, []),
|
|
]
|
|
)
|
|
]
|
|
|
|
def get_localdb(self):
|
|
return FakeDB(
|
|
self.get_syncdbs()[0].pkgcache
|
|
+ [
|
|
FakePackage("h", True, []),
|
|
FakePackage("i", False, ["h"]),
|
|
FakePackage("j", False, []),
|
|
FakePackage("k", False, ["l"]),
|
|
FakePackage("l", False, []),
|
|
]
|
|
)
|
|
|
|
|
|
def fake_create_pyalpm_handle(self):
|
|
return FakePyalpmHandle()
|
|
|
|
|
|
def test_get_native_orphans_pacman(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
monkeypatch.setattr(PacmanInterface, "_create_pyalpm_handle", fake_create_pyalpm_handle)
|
|
|
|
interface = PacmanInterface(
|
|
None, # type: ignore
|
|
False,
|
|
set(),
|
|
2048,
|
|
"/var/lib/pacman/",
|
|
)
|
|
|
|
assert interface.get_native_orphans() == {"d", "e", "f", "g"}
|
|
|
|
|
|
def test_get_foreign_orphans_aur(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
monkeypatch.setattr(AurPacmanInterface, "_create_pyalpm_handle", fake_create_pyalpm_handle)
|
|
|
|
interface = AurPacmanInterface(
|
|
None, # type: ignore
|
|
False,
|
|
set(),
|
|
2048,
|
|
"/var/lib/pacman/",
|
|
)
|
|
|
|
assert interface.get_foreign_orphans() == {"j", "k", "l"}
|