Skip to content

Commit f8a66f9

Browse files
committed
Add tests for VALIDATION_WHEEL_NAME_REGEX
1 parent 64d4ce6 commit f8a66f9

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed

tests/test_constants.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
from __future__ import annotations
2+
3+
from dataclasses import dataclass
4+
5+
import pytest
6+
7+
from variantlib.constants import VALIDATION_WHEEL_NAME_REGEX
8+
9+
10+
@dataclass
11+
class WheelNameTuple:
12+
base_wheel_name: str
13+
namever: str
14+
name: str
15+
ver: str
16+
build: str | None
17+
pyver: str
18+
abi: str
19+
plat: str
20+
variant_hash: str | None
21+
22+
23+
@pytest.mark.parametrize(
24+
("name", "expected"),
25+
[
26+
(
27+
# no build tag and no variant hash
28+
"foo-1.2.3-py3-none-any.whl",
29+
WheelNameTuple(
30+
base_wheel_name="foo-1.2.3-py3-none-any",
31+
namever="foo-1.2.3",
32+
name="foo",
33+
ver="1.2.3",
34+
build=None,
35+
pyver="py3",
36+
abi="none",
37+
plat="any",
38+
variant_hash=None,
39+
),
40+
),
41+
(
42+
# build tag and no variant hash
43+
"foo-1.2.3-5foo-py3-none-any.whl",
44+
WheelNameTuple(
45+
base_wheel_name="foo-1.2.3-5foo-py3-none-any",
46+
namever="foo-1.2.3",
47+
name="foo",
48+
ver="1.2.3",
49+
build="5foo",
50+
pyver="py3",
51+
abi="none",
52+
plat="any",
53+
variant_hash=None,
54+
),
55+
),
56+
(
57+
# no build tag and variant hash
58+
"foo-1.2.3-py3-none-any-12345678.whl",
59+
WheelNameTuple(
60+
base_wheel_name="foo-1.2.3-py3-none-any",
61+
namever="foo-1.2.3",
62+
name="foo",
63+
ver="1.2.3",
64+
build=None,
65+
pyver="py3",
66+
abi="none",
67+
plat="any",
68+
variant_hash="12345678",
69+
),
70+
),
71+
(
72+
# build tag and variant hash
73+
"foo-1.2.3-5foo-py3-none-any-12345678.whl",
74+
WheelNameTuple(
75+
base_wheel_name="foo-1.2.3-5foo-py3-none-any",
76+
namever="foo-1.2.3",
77+
name="foo",
78+
ver="1.2.3",
79+
build="5foo",
80+
pyver="py3",
81+
abi="none",
82+
plat="any",
83+
variant_hash="12345678",
84+
),
85+
),
86+
(
87+
# pytag that looks like build tag
88+
"foo-1.2.3-3-none-any.whl",
89+
WheelNameTuple(
90+
base_wheel_name="foo-1.2.3-3-none-any",
91+
namever="foo-1.2.3",
92+
name="foo",
93+
ver="1.2.3",
94+
build=None,
95+
pyver="3",
96+
abi="none",
97+
plat="any",
98+
variant_hash=None,
99+
),
100+
),
101+
(
102+
# pytag that looks like build tag and variant hash
103+
# (this is a known shortcoming)
104+
"foo-1.2.3-3-none-any-12345678.whl",
105+
WheelNameTuple(
106+
base_wheel_name="foo-1.2.3-3-none-any-12345678",
107+
namever="foo-1.2.3",
108+
name="foo",
109+
ver="1.2.3",
110+
build="3",
111+
pyver="none",
112+
abi="any",
113+
plat="12345678",
114+
variant_hash=None,
115+
),
116+
),
117+
],
118+
)
119+
def test_wheel_name_regex(name: str, expected: WheelNameTuple) -> None:
120+
assert (match := VALIDATION_WHEEL_NAME_REGEX.fullmatch(name)) is not None
121+
assert WheelNameTuple(*match.groups()) == expected

0 commit comments

Comments
 (0)