30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
"""验证 wheel 元数据检查脚本,不构建 wheel 或安装运行时依赖。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
import zipfile
|
|
|
|
|
|
CLIENT_ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(CLIENT_ROOT / "scripts"))
|
|
|
|
from verify_wheel_metadata import dependencies_from_requirements, verify_wheel_metadata
|
|
|
|
|
|
class WheelMetadataTests(unittest.TestCase):
|
|
def test_metadata_checker_accepts_dependencies_from_the_single_requirements_file(self) -> None:
|
|
expected_dependencies = dependencies_from_requirements(CLIENT_ROOT / "requirements.txt")
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
wheel_file = Path(directory) / "cmbuyer_client-0.1.0-py3-none-any.whl"
|
|
metadata = "Metadata-Version: 2.3\n" + "".join(
|
|
f"Requires-Dist: {dependency}\n" for dependency in sorted(expected_dependencies)
|
|
)
|
|
with zipfile.ZipFile(wheel_file, "w") as wheel:
|
|
wheel.writestr("cmbuyer_client-0.1.0.dist-info/METADATA", metadata)
|
|
|
|
self.assertEqual(set(), verify_wheel_metadata(wheel_file, CLIENT_ROOT / "requirements.txt"))
|