Skip to content

Commit 4494b1c

Browse files
committed
Add tests for cpython_tags()
1 parent fb58d28 commit 4494b1c

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/test_tags.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,3 +680,78 @@ def test_generic_sys_tags(monkeypatch):
680680
result = list(tags.sys_tags())
681681
expected = tags.Tag("py{}0".format(sys.version_info[0]), "none", "any")
682682
assert result[-1] == expected
683+
684+
685+
def test_warn_parameters():
686+
assert not tags._warn_parameter("test_warn_parameters", {})
687+
assert not tags._warn_parameter("test_warn_parameters", {"warn": False})
688+
assert tags._warn_parameter("test_warn_parameters", {"warn": True})
689+
message_re = re.compile(r"too_many.+{!r}".format("whatever"))
690+
with pytest.raises(TypeError, match=message_re):
691+
tags._warn_parameter("too_many", {"warn": True, "whatever": True})
692+
message_re = re.compile(r"missing.+{!r}".format("unexpected"))
693+
with pytest.raises(TypeError, match=message_re):
694+
tags._warn_parameter("missing", {"unexpected": True})
695+
696+
697+
def test_cpython_tags_all_args():
698+
result = list(tags.cpython_tags((3, 8), ["cp38d", "cp38"], ["plat1", "plat2"]))
699+
assert result == [
700+
tags.Tag("cp38", "cp38d", "plat1"),
701+
tags.Tag("cp38", "cp38d", "plat2"),
702+
tags.Tag("cp38", "cp38", "plat1"),
703+
tags.Tag("cp38", "cp38", "plat2"),
704+
tags.Tag("cp38", "abi3", "plat1"),
705+
tags.Tag("cp38", "abi3", "plat2"),
706+
tags.Tag("cp38", "none", "plat1"),
707+
tags.Tag("cp38", "none", "plat2"),
708+
tags.Tag("cp37", "abi3", "plat1"),
709+
tags.Tag("cp37", "abi3", "plat2"),
710+
tags.Tag("cp36", "abi3", "plat1"),
711+
tags.Tag("cp36", "abi3", "plat2"),
712+
tags.Tag("cp35", "abi3", "plat1"),
713+
tags.Tag("cp35", "abi3", "plat2"),
714+
tags.Tag("cp34", "abi3", "plat1"),
715+
tags.Tag("cp34", "abi3", "plat2"),
716+
tags.Tag("cp33", "abi3", "plat1"),
717+
tags.Tag("cp33", "abi3", "plat2"),
718+
tags.Tag("cp32", "abi3", "plat1"),
719+
tags.Tag("cp32", "abi3", "plat2"),
720+
]
721+
result = list(tags.cpython_tags((3, 3), ["cp33m"], ["plat1", "plat2"]))
722+
assert result == [
723+
tags.Tag("cp33", "cp33m", "plat1"),
724+
tags.Tag("cp33", "cp33m", "plat2"),
725+
tags.Tag("cp33", "abi3", "plat1"),
726+
tags.Tag("cp33", "abi3", "plat2"),
727+
tags.Tag("cp33", "none", "plat1"),
728+
tags.Tag("cp33", "none", "plat2"),
729+
tags.Tag("cp32", "abi3", "plat1"),
730+
tags.Tag("cp32", "abi3", "plat2"),
731+
]
732+
733+
734+
def test_cpython_tags_defaults(monkeypatch):
735+
# python_version
736+
tag = next(tags.cpython_tags(abis=["abi3"], platforms=["any"]))
737+
interpreter = "cp{}{}".format(*sys.version_info[:2])
738+
assert tag == tags.Tag(interpreter, "abi3", "any")
739+
# abis
740+
with monkeypatch.context() as m:
741+
m.setattr(tags, "_cpython_abis", lambda _1, _2: ["cp38"])
742+
result = list(tags.cpython_tags((3, 8), platforms=["any"]))
743+
assert tags.Tag("cp38", "cp38", "any") in result
744+
assert tags.Tag("cp38", "abi3", "any") in result
745+
assert tags.Tag("cp38", "none", "any") in result
746+
# platforms
747+
with monkeypatch.context() as m:
748+
m.setattr(tags, "_platforms", lambda: ["plat1"])
749+
result = list(tags.cpython_tags((3, 8), abis=["whatever"]))
750+
assert tags.Tag("cp38", "whatever", "plat1") in result
751+
752+
753+
@pytest.mark.parametrize("abis", [["abi3"], ["none"]])
754+
def test_cpython_tags_skip_redundant_abis(abis):
755+
results = list(tags.cpython_tags((3, 0), abis=abis, platforms=["any"]))
756+
assert results == [tags.Tag("cp30", "abi3", "any"), tags.Tag("cp30", "none", "any")]
757+

0 commit comments

Comments
 (0)