Skip to content

Commit 651a8c0

Browse files
authored
tests: make tests independent of currently available Python versions (#10547)
1 parent 19146aa commit 651a8c0

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

tests/masonry/builders/test_editable_builder.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,24 @@ def expected_metadata_version() -> str:
109109
return metadata.metadata_version
110110

111111

112+
def expected_python_classifiers(min_version: str | None = None) -> str:
113+
if min_version:
114+
min_version_tuple = tuple(map(int, min_version.split(".")))
115+
relevant_versions = set()
116+
for version in Package.AVAILABLE_PYTHONS:
117+
version_tuple = tuple(map(int, version.split(".")))
118+
if version_tuple >= min_version_tuple[: len(version_tuple)]:
119+
relevant_versions.add(version)
120+
else:
121+
relevant_versions = Package.AVAILABLE_PYTHONS
122+
return "\n".join(
123+
f"Classifier: Programming Language :: Python :: {version}"
124+
for version in sorted(
125+
relevant_versions, key=lambda x: tuple(map(int, x.split(".")))
126+
)
127+
)
128+
129+
112130
@pytest.mark.parametrize("project", ("simple_project", "simple_project_legacy"))
113131
def test_builder_installs_proper_files_for_standard_packages(
114132
project: str,
@@ -163,16 +181,8 @@ def test_builder_installs_proper_files_for_standard_packages(
163181
== "[console_scripts]\nbaz=bar:baz.boom.bim\nfoo=foo:bar\n"
164182
"fox=fuz.foo:bar.baz\n\n"
165183
)
166-
python_classifiers = "\n".join(
167-
f"Classifier: Programming Language :: Python :: {version}"
168-
for version in sorted(
169-
Package.AVAILABLE_PYTHONS,
170-
key=lambda x: tuple(map(int, x.split("."))),
171-
)
172-
)
173-
metadata_version = expected_metadata_version()
174184
metadata = f"""\
175-
Metadata-Version: {metadata_version}
185+
Metadata-Version: {expected_metadata_version()}
176186
Name: simple-project
177187
Version: 1.2.3
178188
Summary: Some description.
@@ -183,7 +193,7 @@ def test_builder_installs_proper_files_for_standard_packages(
183193
Author-email: sebastien@eustace.io
184194
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
185195
Classifier: License :: OSI Approved :: MIT License
186-
{python_classifiers}
196+
{expected_python_classifiers()}
187197
Classifier: Topic :: Software Development :: Build Tools
188198
Classifier: Topic :: Software Development :: Libraries :: Python Modules
189199
Project-URL: Documentation, https://python-poetry.org/docs
@@ -346,9 +356,8 @@ def test_builder_generates_proper_metadata_when_multiple_readme_files(
346356
dist_info = tmp_venv.site_packages.find(dist_info)[0]
347357
assert dist_info.joinpath("METADATA").exists()
348358

349-
metadata_version = expected_metadata_version()
350359
metadata = f"""\
351-
Metadata-Version: {metadata_version}
360+
Metadata-Version: {expected_metadata_version()}
352361
Name: my-package
353362
Version: 0.1
354363
Summary: Some description.
@@ -357,14 +366,7 @@ def test_builder_generates_proper_metadata_when_multiple_readme_files(
357366
Author-email: you@example.com
358367
Requires-Python: >=3.7,<4.0
359368
Classifier: License :: OSI Approved :: MIT License
360-
Classifier: Programming Language :: Python :: 3
361-
Classifier: Programming Language :: Python :: 3.7
362-
Classifier: Programming Language :: Python :: 3.8
363-
Classifier: Programming Language :: Python :: 3.9
364-
Classifier: Programming Language :: Python :: 3.10
365-
Classifier: Programming Language :: Python :: 3.11
366-
Classifier: Programming Language :: Python :: 3.12
367-
Classifier: Programming Language :: Python :: 3.13
369+
{expected_python_classifiers("3.7")}
368370
Project-URL: Homepage, https://python-poetry.org
369371
Description-Content-Type: text/x-rst
370372

0 commit comments

Comments
 (0)