From a03cc9d198945416c929c1b3c3a8676c67ed6e1b Mon Sep 17 00:00:00 2001 From: Jakob Keller <57402305+jakob-keller@users.noreply.github.com> Date: Fri, 1 Sep 2023 19:35:27 +0200 Subject: [PATCH] test: improve flexibility of unit tests with respect to Python versions supported by `poetry.core` (#8396) --- .../masonry/builders/test_editable_builder.py | 23 ++++++++----------- tests/test_factory.py | 23 +++++++++++-------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/tests/masonry/builders/test_editable_builder.py b/tests/masonry/builders/test_editable_builder.py index 6ae2b6b1e9c..9927dec29ec 100644 --- a/tests/masonry/builders/test_editable_builder.py +++ b/tests/masonry/builders/test_editable_builder.py @@ -15,6 +15,7 @@ from cleo.io.null_io import NullIO from deepdiff import DeepDiff from poetry.core.constraints.version import Version +from poetry.core.packages.package import Package from poetry.factory import Factory from poetry.masonry.builders.editable import EditableBuilder @@ -125,8 +126,14 @@ def test_builder_installs_proper_files_for_standard_packages( == "[console_scripts]\nbaz=bar:baz.boom.bim\nfoo=foo:bar\n" "fox=fuz.foo:bar.baz\n\n" ) - - metadata = """\ + python_classifiers = "\n".join( + f"Classifier: Programming Language :: Python :: {version}" + for version in sorted( + Package.AVAILABLE_PYTHONS, + key=lambda x: tuple(map(int, x.split("."))), + ) + ) + metadata = f"""\ Metadata-Version: 2.1 Name: simple-project Version: 1.2.3 @@ -138,17 +145,7 @@ def test_builder_installs_proper_files_for_standard_packages( Author-email: sebastien@eustace.io Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 +{python_classifiers} Classifier: Topic :: Software Development :: Build Tools Classifier: Topic :: Software Development :: Libraries :: Python Modules Project-URL: Documentation, https://python-poetry.org/docs diff --git a/tests/test_factory.py b/tests/test_factory.py index fcb0bbbc1d2..d1eaf7b33e9 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -9,7 +9,9 @@ from cleo.io.buffered_io import BufferedIO from deepdiff import DeepDiff from packaging.utils import canonicalize_name +from poetry.core.constraints.version import Version from poetry.core.constraints.version import parse_constraint +from poetry.core.packages.package import Package from poetry.core.packages.vcs_dependency import VCSDependency from poetry.exceptions import PoetryException @@ -131,15 +133,18 @@ def test_create_poetry(fixture_dir: FixtureDirGetter) -> None: assert package.all_classifiers == [ "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", + *( + f"Programming Language :: Python :: {version}" + for version in sorted( + Package.AVAILABLE_PYTHONS, + key=lambda x: tuple(map(int, x.split("."))), + ) + if package.python_constraint.allows_any( + parse_constraint(version + ".*") + if len(version) == 1 + else Version.parse(version) + ) + ), "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules", ]