Skip to content

Commit 7c9508a

Browse files
committed
Adjust tests to run with oldest supported version of packaging
1 parent 3ea3455 commit 7c9508a

File tree

4 files changed

+82
-25
lines changed

4 files changed

+82
-25
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
Metadata-Version: 2.3
2+
Name: BeagleVote
3+
Version: 1.0a2
4+
Platform: ObscureUnix
5+
Platform: RareDOS
6+
Supported-Platform: RedHat 7.2
7+
Supported-Platform: i386-win32-2791
8+
Summary: A module for collecting votes from beagles.
9+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
10+
Keywords: dog,puppy,voting,election
11+
Home-page: http://www.example.com/~cschultz/bvote/
12+
Download-URL: …/BeagleVote-0.45.tgz
13+
Author: C. Schultz, Universal Features Syndicate,
14+
Los Angeles, CA <[email protected]>
15+
Author-email: "C. Schultz" <[email protected]>
16+
Maintainer: C. Schultz, Universal Features Syndicate,
17+
Los Angeles, CA <[email protected]>
18+
Maintainer-email: "C. Schultz" <[email protected]>
19+
License: This software may only be obtained by sending the
20+
author a postcard, and then the user promises not
21+
to redistribute it.
22+
Classifier: Development Status :: 4 - Beta
23+
Classifier: Environment :: Console (Text Based)
24+
Provides-Extra: pdf
25+
Requires-Dist: reportlab; extra == 'pdf'
26+
Requires-Dist: pkginfo
27+
Requires-Dist: PasteDeploy
28+
Requires-Dist: zope.interface (>3.5.0)
29+
Requires-Dist: pywin32 >1.0; sys_platform == 'win32'
30+
Requires-Python: >=3
31+
Requires-External: C
32+
Requires-External: libpng (>=1.5)
33+
Requires-External: make; sys_platform != "win32"
34+
Project-URL: Bug Tracker, http://bitbucket.org/tarek/distribute/issues/
35+
Project-URL: Documentation, https://example.com/BeagleVote
36+
Provides-Dist: OtherProject
37+
Provides-Dist: AnotherProject (3.4)
38+
Provides-Dist: virtual_package; python_version >= "3.4"
39+
Dynamic: Obsoletes-Dist
40+
41+
This description intentionally left blank.
File renamed without changes.

tests/test_package.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import json
1515
import string
1616

17+
import packaging
1718
import pretend
1819
import pytest
1920
from packaging import metadata
21+
from packaging import version
2022

2123
from twine import exceptions
2224
from twine import package as package_file
@@ -175,6 +177,10 @@ def test_package_safe_name_is_correct(pkg_name, expected_name):
175177
def test_metadata_keys_consistency():
176178
"""Check that the translation keys exist in the respective ``TypedDict``."""
177179
raw_keys = metadata.RawMetadata.__annotations__.keys()
180+
if version.Version(packaging.__version__) < version.Version("24.1"):
181+
# ``packaging`` version 24.0 and earlier do not know about the
182+
# License-Expression and License-File metadata fields yet.
183+
raw_keys = raw_keys | set(("license_files", "license_expression"))
178184
assert set(package_file._RAW_TO_PACKAGE_METADATA.keys()).issubset(raw_keys)
179185
package_keys = package_file.PackageMetadata.__annotations__.keys()
180186
assert set(package_file._RAW_TO_PACKAGE_METADATA.values()).issubset(package_keys)
@@ -434,32 +440,36 @@ def test_package_from_unrecognized_file_error():
434440
assert "Unknown distribution format" in err.value.args[0]
435441

436442

437-
@pytest.mark.parametrize(
438-
"read_data, filtered",
439-
[
440-
pytest.param(
441-
"Metadata-Version: 2.1\n"
442-
"Name: test-package\n"
443-
"Version: 1.0.0\n"
444-
"License-File: LICENSE\n",
445-
True,
446-
id="invalid License-File",
447-
),
448-
pytest.param(
449-
"Metadata-Version: 2.4\n"
450-
"Name: test-package\n"
451-
"Version: 1.0.0\n"
452-
"License-File: LICENSE\n",
453-
False,
454-
id="valid License-File",
455-
),
456-
],
457-
)
458-
def test_setuptools_license_file(read_data, filtered, monkeypatch):
443+
def test_setuptools_license_file_invalid(monkeypatch):
459444
"""Drop License-File metadata entries if Metadata-Version is less than 2.4."""
445+
read_data = (
446+
"Metadata-Version: 2.1\n"
447+
"Name: test-package\n"
448+
"Version: 1.0.0\n"
449+
"License-File: LICENSE\n"
450+
)
451+
monkeypatch.setattr(package_file.wheel.Wheel, "read", lambda _: read_data)
452+
filename = "tests/fixtures/twine-1.5.0-py2.py3-none-any.whl"
453+
454+
package = package_file.PackageFile.from_filename(filename, comment=None)
455+
meta = package.metadata_dictionary()
456+
assert "license_file" not in meta
457+
458+
459+
@pytest.mark.skipif(
460+
version.Version(packaging.__version__) < version.Version("24.1"),
461+
reason="packaging is too old",
462+
)
463+
def test_setuptools_license_file_valid(monkeypatch):
464+
read_data = (
465+
"Metadata-Version: 2.1\n"
466+
"Name: test-package\n"
467+
"Version: 1.0.0\n"
468+
"License-File: LICENSE\n"
469+
)
460470
monkeypatch.setattr(package_file.wheel.Wheel, "read", lambda _: read_data)
461471
filename = "tests/fixtures/twine-1.5.0-py2.py3-none-any.whl"
462472

463473
package = package_file.PackageFile.from_filename(filename, comment=None)
464474
meta = package.metadata_dictionary()
465-
assert filtered != ("license_file" in meta)
475+
assert "license_file" not in meta

tests/test_repository.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import logging
1515
from contextlib import contextmanager
1616

17+
import packaging
1718
import pretend
1819
import pytest
1920
import requests
21+
from packaging import version
2022

2123
from twine import package
2224
from twine import repository
@@ -61,8 +63,12 @@ def test_iterables_are_flattened():
6163

6264
def test_all_metadata_fields_are_flattened(monkeypatch):
6365
"""Verify that package metadata fields are correctly flattened."""
64-
# This file contains all metadata fields known up to metadata version 2.4.
65-
metadata = open("tests/fixtures/everything.metadata")
66+
if version.Version(packaging.__version__) < version.Version("24.1"):
67+
# All metadata fields up to metadata version 2.3
68+
metadata = open("tests/fixtures/everything.metadata23")
69+
else:
70+
# All metadata fields up to metadata version 2.4
71+
metadata = open("tests/fixtures/everything.metadata24")
6672
monkeypatch.setattr(package.wheel.Wheel, "read", metadata.read)
6773
filename = "tests/fixtures/twine-1.5.0-py2.py3-none-any.whl"
6874
data = package.PackageFile.from_filename(

0 commit comments

Comments
 (0)