diff options
-rw-r--r-- | pym/gentoolkit/test/test_dependencies.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pym/gentoolkit/test/test_dependencies.py b/pym/gentoolkit/test/test_dependencies.py new file mode 100644 index 0000000..48e9507 --- /dev/null +++ b/pym/gentoolkit/test/test_dependencies.py @@ -0,0 +1,71 @@ +import portage +from typing import List, Dict, Optional +from pytest import MonkeyPatch +from gentoolkit.dependencies import Dependencies + + +def is_cp_in_cpv(cp: str, cpv: str) -> bool: + other_cp, _, _ = portage.pkgsplit(cpv) + return cp == other_cp + + +def environment( + self: Dependencies, + env_vars: List[str], + fake_depends: Dict[str, Optional[Dict[str, str]]], + fake_pkgs: List[str], +) -> List[str]: + metadata = None + for pkg in fake_pkgs: + if is_cp_in_cpv(self.cp, pkg): + if (metadata := fake_depends[pkg]) is not None: + break + else: + return [""] + results = list() + for env_var in env_vars: + try: + value = metadata[env_var] + except KeyError: + value = "" + results.append(value) + return results + + +def test_basic_revdeps(monkeypatch: MonkeyPatch) -> None: + fake_depends = { + "app-misc/root-1.0": None, + "app-misc/a-1.0": {"DEPEND": "app-misc/root"}, + "app-misc/b-1.0": {"DEPEND": "app-misc/a"}, + "app-misc/c-1.0": {"DEPEND": "app-misc/b"}, + "app-misc/d-1.0": None, + } + fake_pkgs = list(fake_depends.keys()) + + def e(self, env_vars): + return environment(self, env_vars, fake_depends, fake_pkgs) + + monkeypatch.setattr(Dependencies, "environment", e) + + # confirm that monkeypatch is working as expected + assert Dependencies("app-misc/root").environment(["DEPEND"]) == [""] + assert Dependencies("app-misc/a").environment(["DEPEND"]) == ["app-misc/root"] + assert Dependencies("app-misc/b").environment(["DEPEND"]) == ["app-misc/a"] + assert Dependencies("app-misc/c").environment(["DEPEND"]) == ["app-misc/b"] + assert Dependencies("app-misc/d").environment(["DEPEND"]) == [""] + + assert sorted( + pkg.cpv + for pkg in Dependencies("app-misc/root").graph_reverse_depends(pkgset=fake_pkgs) + ) == ["app-misc/a-1.0"] + + assert sorted( + pkg.cpv + for pkg in Dependencies("app-misc/root").graph_reverse_depends( + pkgset=fake_pkgs, only_direct=False + ) + ) == [ + "app-misc/a-1.0", + "app-misc/b-1.0", + "app-misc/c-1.0", + ] |