diff options
Diffstat (limited to 'tests/test_cross_check_precheck.py')
-rw-r--r-- | tests/test_cross_check_precheck.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/tests/test_cross_check_precheck.py b/tests/test_cross_check_precheck.py new file mode 100644 index 0000000..41bf01c --- /dev/null +++ b/tests/test_cross_check_precheck.py @@ -0,0 +1,124 @@ +from typing import Optional + +import pytest + +from debputy.plugin.api.test_api import package_metadata_context +from debputy.util import package_cross_check_precheck + + +@pytest.mark.parametrize( + "a_arch,b_arch,a_bp,b_bp,act_on_a,act_on_b,ex_res_a2b,ex_res_b2a", + [ + # Both way OK + ("any", "any", None, None, True, True, True, True), + ("all", "all", None, None, True, True, True, True), + ("any", "any", "<!noudeb>", "<!noudeb>", True, True, True, True), + # OK as well. Same BPs just reordered + ( + "any", + "any", + "<!noudeb !noinsttests>", + "<!noinsttests !noudeb>", + True, + True, + True, + True, + ), + ( + "any", + "any", + "<!noudeb> <!noinsttests>", + "<!noinsttests> <!noudeb>", + True, + True, + True, + True, + ), + # One way OK + ("any", "any", None, "<!noudeb>", True, True, True, False), + ("any", "any", None, "<pkg.foo.positive-build>", True, True, True, False), + # One way OK - BP is clearly a subset of the other + ( + "any", + "any", + "<!noudeb>", + "<!noudeb> <!noinsttests>", + True, + True, + True, + False, + ), + ( + "any", + "any", + "<pos>", + "<pos> <pkg.foo.positive-build>", + True, + True, + True, + False, + ), + # Currently fails but should probably allow one way + ( + "any", + "any", + "<!nopython>", + "<!noudeb> <!notestests>", + True, + True, + False, + False, + ), + ( + "any", + "any", + "<!nopython>", + "<!noudeb> <pkg.foo.positive-build>", + True, + True, + False, + False, + ), + # Negative tests + ("any", "all", None, None, True, True, False, False), + ("all", "all", None, None, True, False, False, False), + ("any", "any", None, None, False, True, False, False), + ("i386", "amd64", None, None, True, True, False, False), + ], +) +def test_generate_deb_filename( + a_arch: str, + b_arch: str, + a_bp: Optional[str], + b_bp: Optional[str], + act_on_a: bool, + act_on_b: bool, + ex_res_a2b: bool, + ex_res_b2a: bool, +): + pkg_a_fields = { + "Package": "pkg-a", + "Architecture": a_arch, + } + if a_bp is not None: + pkg_a_fields["Build-Profiles"] = a_bp + + pkg_b_fields = { + "Package": "pkg-b", + "Architecture": b_arch, + } + if b_bp is not None: + pkg_b_fields["Build-Profiles"] = b_bp + + pkg_a = package_metadata_context( + package_fields=pkg_a_fields, + should_be_acted_on=act_on_a, + ).binary_package + pkg_b = package_metadata_context( + package_fields=pkg_b_fields, + should_be_acted_on=act_on_b, + ).binary_package + + assert package_cross_check_precheck(pkg_a, pkg_b) == (ex_res_a2b, ex_res_b2a) + # Inverted should functionally give the same answer + assert package_cross_check_precheck(pkg_b, pkg_a) == (ex_res_b2a, ex_res_a2b) |