1414
1515import mesonpy
1616
17- from .conftest import in_git_repo_context
17+ from .conftest import in_git_repo_context , metadata
1818
1919
2020def test_no_pep621 (sdist_library ):
2121 with tarfile .open (sdist_library , 'r:gz' ) as sdist :
22- sdist_pkg_info = sdist .extractfile ('library-1.0.0/PKG-INFO' ).read (). decode ()
22+ sdist_pkg_info = sdist .extractfile ('library-1.0.0/PKG-INFO' ).read ()
2323
24- assert sdist_pkg_info == textwrap .dedent ('''\
24+ assert metadata ( sdist_pkg_info ) == metadata ( textwrap .dedent ('''\
2525 Metadata-Version: 2.1
2626 Name: library
2727 Version: 1.0.0
28- ''' )
28+ ''' ))
2929
3030
3131def test_pep621 (sdist_full_metadata ):
3232 with tarfile .open (sdist_full_metadata , 'r:gz' ) as sdist :
33- sdist_pkg_info = sdist .extractfile ('full_metadata-1.2.3/PKG-INFO' ).read (). decode ()
33+ sdist_pkg_info = sdist .extractfile ('full_metadata-1.2.3/PKG-INFO' ).read ()
3434
35- metadata = textwrap .dedent ('''\
35+ meta = metadata (sdist_pkg_info )
36+
37+ # pyproject-metadata prior to 0.9.0 strips trailing newlines
38+ meta ['license' ] = meta ['license' ].rstrip ()
39+
40+ # pyproject-metadata 0.9.0 and later does not emit Home-Page
41+ meta .pop ('home_page' , None )
42+ # nor normalizes Project-URL keys
43+ meta ['project_urls' ] = {k .lower (): v for k , v in meta ['project_urls' ].items ()}
44+
45+ assert meta == metadata (textwrap .dedent ('''\
3646 Metadata-Version: 2.1
3747 Name: full-metadata
3848 Version: 1.2.3
3949 Summary: Some package with all of the PEP 621 metadata
4050 Keywords: full,metadata,keyword with spaces
41- Home-page: https://example.com
4251 Author: Jane Doe
4352 Author-Email: Unknown <[email protected] > 4453 Maintainer-Email: Jane Doe <[email protected] > 4554 License: some license
4655 Classifier: Development Status :: 4 - Beta
4756 Classifier: Programming Language :: Python
48- Project-URL: Homepage , https://example.com
49- Project-URL: Documentation , https://readthedocs.org
50- Project-URL: Repository , https://github.com/mesonbuild/meson-python
51- Project-URL: Changelog , https://github.com/mesonbuild/meson-python/blob/master/CHANGELOG.rst
57+ Project-URL: homepage , https://example.com
58+ Project-URL: documentation , https://readthedocs.org
59+ Project-URL: repository , https://github.com/mesonbuild/meson-python
60+ Project-URL: changelog , https://github.com/mesonbuild/meson-python/blob/master/CHANGELOG.rst
5261 Requires-Python: >=3.7
5362 Requires-Dist: a
5463 Requires-Dist: b>1
@@ -67,20 +76,18 @@ def test_pep621(sdist_full_metadata):
6776 # full-metadata
6877
6978 An example package with all of the PEP 621 metadata!
70- ''' )
71-
72- assert sdist_pkg_info == metadata
79+ ''' ))
7380
7481
7582def test_dynamic_version (sdist_dynamic_version ):
7683 with tarfile .open (sdist_dynamic_version , 'r:gz' ) as sdist :
77- sdist_pkg_info = sdist .extractfile ('dynamic_version-1.0.0/PKG-INFO' ).read (). decode ()
84+ sdist_pkg_info = sdist .extractfile ('dynamic_version-1.0.0/PKG-INFO' ).read ()
7885
79- assert sdist_pkg_info == textwrap .dedent ('''\
86+ assert metadata ( sdist_pkg_info ) == metadata ( textwrap .dedent ('''\
8087 Metadata-Version: 2.1
8188 Name: dynamic-version
8289 Version: 1.0.0
83- ''' )
90+ ''' ))
8491
8592
8693def test_contents (sdist_library ):
0 commit comments