Skip to content

Commit 1ef36f2

Browse files
committed
Test metadata as produced by _core_metadata (#4029)
2 parents 39895e4 + 0f64181 commit 1ef36f2

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ testing-integration =
8989
jaraco.envs>=2.2
9090
build[virtualenv]
9191
filelock>=3.4.0
92+
packaging
9293

9394
docs =
9495
# upstream

setuptools/tests/config/test_apply_pyprojecttoml.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import pytest
1515
from ini2toml.api import Translator
16+
from packaging.metadata import Metadata
1617

1718
import setuptools # noqa ensure monkey patch to metadata
1819
from setuptools.dist import Distribution
@@ -428,6 +429,9 @@ def core_metadata(dist) -> str:
428429
dist.metadata.write_pkg_file(buffer)
429430
pkg_file_txt = buffer.getvalue()
430431

432+
# Make sure core metadata is valid
433+
Metadata.from_email(pkg_file_txt, validate=True) # can raise exceptions
434+
431435
skip_prefixes = ()
432436
skip_lines = set()
433437
# ---- DIFF NORMALISATION ----

setuptools/tests/test_core_metadata.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import pytest
77

8+
from packaging.metadata import Metadata
9+
810
from setuptools import sic, _reqs
911
from setuptools.dist import Distribution
1012
from setuptools._core_metadata import rfc822_escape, rfc822_unescape
@@ -166,6 +168,9 @@ def test_read_metadata(name, attrs):
166168
PKG_INFO = io.StringIO()
167169

168170
metadata_out.write_pkg_file(PKG_INFO)
171+
PKG_INFO.seek(0)
172+
pkg_info = PKG_INFO.read()
173+
assert _valid_metadata(pkg_info)
169174

170175
PKG_INFO.seek(0)
171176
metadata_in = dist_class()
@@ -281,9 +286,12 @@ def test_maintainer_author(name, attrs, tmpdir):
281286
dist.metadata.write_pkg_info(fn_s)
282287

283288
with io.open(str(fn.join('PKG-INFO')), 'r', encoding='utf-8') as f:
284-
raw_pkg_lines = f.readlines()
289+
pkg_info = f.read()
290+
291+
assert _valid_metadata(pkg_info)
285292

286293
# Drop blank lines and strip lines from default description
294+
raw_pkg_lines = pkg_info.splitlines()
287295
pkg_lines = list(filter(None, raw_pkg_lines[:-2]))
288296

289297
pkg_lines_set = set(pkg_lines)
@@ -333,6 +341,8 @@ def test_parity_with_metadata_from_pypa_wheel(tmp_path):
333341
dist.metadata.write_pkg_file(fp)
334342
pkg_info = fp.getvalue()
335343

344+
assert _valid_metadata(pkg_info)
345+
336346
# Ensure Requires-Dist is present
337347
expected = [
338348
'Metadata-Version:',
@@ -378,3 +388,8 @@ def test_parity_with_metadata_from_pypa_wheel(tmp_path):
378388
assert metadata_msg.as_string() == pkg_info_msg.as_string()
379389
assert metadata_deps == pkg_info_deps
380390
assert metadata_extras == pkg_info_extras
391+
392+
393+
def _valid_metadata(text: str) -> bool:
394+
metadata = Metadata.from_email(text, validate=True) # can raise exceptions
395+
return metadata is not None

tox.ini

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
[testenv]
22
deps =
33
# Ideally all the dependencies should be set as "extras"
4-
# workaround for pypa/build#630
5-
build[virtualenv] @ git+https://github.com/jaraco/build@bugfix/630-importlib-metadata
4+
build[virtualenv] @ git+https://github.com/pypa/build@59c1f87
5+
# ^-- pypa/build#630, use dev version while we wait for the new release
6+
packaging @ git+https://github.com/pypa/packaging@7e68d82
7+
# ^-- use dev version while we wait for the new release
68
setenv =
79
PYTHONWARNDEFAULTENCODING = 1
810
SETUPTOOLS_ENFORCE_DEPRECATION = 1

0 commit comments

Comments
 (0)