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