-
Notifications
You must be signed in to change notification settings - Fork 157
/
Copy pathtest_metadata.py
85 lines (71 loc) · 2.24 KB
/
test_metadata.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from __future__ import annotations
from wheel.metadata import pkginfo_to_metadata
def test_pkginfo_to_metadata(tmp_path):
expected_metadata = [
("Metadata-Version", "2.1"),
("Name", "spam"),
("Version", "0.1"),
("Requires-Dist", "pip@ https://github.com/pypa/pip/archive/1.3.1.zip"),
("Requires-Dist", 'pywin32; sys_platform == "win32"'),
("Requires-Dist", 'foo@ http://host/foo.zip ; sys_platform == "win32"'),
("Provides-Extra", "signatures"),
(
"Requires-Dist",
'pyxdg; sys_platform != "win32" and extra == "signatures"',
),
("Provides-Extra", "empty_extra"),
("Provides-Extra", "extra"),
("Requires-Dist", 'bar@ http://host/bar.zip ; extra == "extra"'),
("Provides-Extra", "faster-signatures"),
("Requires-Dist", 'ed25519ll; extra == "faster-signatures"'),
("Provides-Extra", "rest"),
("Requires-Dist", 'docutils>=0.8; extra == "rest"'),
("Requires-Dist", 'keyring; extra == "signatures"'),
("Requires-Dist", 'keyrings.alt; extra == "signatures"'),
("Provides-Extra", "test"),
("Requires-Dist", 'pytest>=3.0.0; extra == "test"'),
("Requires-Dist", 'pytest-cov; extra == "test"'),
]
pkg_info = tmp_path.joinpath("PKG-INFO")
pkg_info.write_text(
"""\
Metadata-Version: 0.0
Name: spam
Version: 0.1
Provides-Extra: empty+extra
Provides-Extra: test
Provides-Extra: reST
Provides-Extra: signatures
Provides-Extra: Signatures
Provides-Extra: faster-signatures""",
encoding="utf-8",
)
egg_info_dir = tmp_path.joinpath("test.egg-info")
egg_info_dir.mkdir(exist_ok=True)
egg_info_dir.joinpath("requires.txt").write_text(
"""\
pip@https://github.com/pypa/pip/archive/1.3.1.zip
[extra]
bar @ http://host/bar.zip
[empty+extra]
[:sys_platform=="win32"]
pywin32
foo @http://host/foo.zip
[faster-signatures]
ed25519ll
[reST]
docutils>=0.8
[signatures]
keyring
keyrings.alt
[Signatures:sys_platform!="win32"]
pyxdg
[test]
pytest>=3.0.0
pytest-cov""",
encoding="utf-8",
)
message = pkginfo_to_metadata(
egg_info_path=str(egg_info_dir), pkginfo_path=str(pkg_info)
)
assert message.items() == expected_metadata