From cd1ae53490dfeae05032324820acf3c049dde48c Mon Sep 17 00:00:00 2001 From: Gyeongjae Choi Date: Thu, 19 Sep 2024 13:26:46 +0000 Subject: [PATCH] update test --- micropip/wheelinfo.py | 2 +- tests/conftest.py | 21 ++-- .../pytest-7.2.2-py3-none-any.whl.metadata.gz | Bin 0 -> 2838 bytes tests/test_wheelinfo.py | 100 +++++++++++++++++- 4 files changed, 114 insertions(+), 9 deletions(-) create mode 100644 tests/test_data/wheel/pytest-7.2.2-py3-none-any.whl.metadata.gz diff --git a/micropip/wheelinfo.py b/micropip/wheelinfo.py index dbe5d78..c0ed8a7 100644 --- a/micropip/wheelinfo.py +++ b/micropip/wheelinfo.py @@ -87,7 +87,7 @@ def from_package_index( version: Version, sha256: str | None, size: int | None, - data_dist_info_metadata: DistributionMetadata, + data_dist_info_metadata: DistributionMetadata = None, ) -> "WheelInfo": """Extract available metadata from response received from package index""" parsed_url = urlparse(url) diff --git a/tests/conftest.py b/tests/conftest.py index c53d723..152310e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -97,6 +97,7 @@ class Wheel: _path: Path name: str + version: str filename: str top_level: str url: str @@ -118,24 +119,30 @@ def __enter__(self): def __exit__(self, *args: Any): self._httpserver.__exit__(*args) - def _register_handler(self, path: Path) -> str: - self._httpserver.expect_request(f"/{path.name}").respond_with_data( - path.read_bytes(), + def _register_handler(self, endpoint: str, data: bytes) -> str: + self._httpserver.expect_request(f"/{endpoint}").respond_with_data( + data, content_type="application/zip", headers={"Access-Control-Allow-Origin": "*"}, ) - return self._httpserver.url_for(f"/{path.name}") + return self._httpserver.url_for(f"/{endpoint}") def add_wheel(self, path: Path, replace: bool = True): - name = parse_wheel_filename(path.name)[0] - url = self._register_handler(path) + name, version = parse_wheel_filename(path.name)[:2] + url = self._register_handler(path.name, path.read_bytes()) + + metadata_file_endpoint = path.with_suffix(".whl.metadata") + metadata_file_gzipped = path.with_suffix(".whl.metadata.gz") + if metadata_file_gzipped.exists(): + data = _read_gzipped_testfile(metadata_file_gzipped) + self._register_handler(metadata_file_endpoint.name, data) if name in self._wheels and not replace: return self._wheels[name] = self.Wheel( - path, name, path.name, name.replace("-", "_"), url + path, name, version, path.name, name.replace("-", "_"), url ) def get(self, name: str) -> Wheel: diff --git a/tests/test_data/wheel/pytest-7.2.2-py3-none-any.whl.metadata.gz b/tests/test_data/wheel/pytest-7.2.2-py3-none-any.whl.metadata.gz new file mode 100644 index 0000000000000000000000000000000000000000..2948d2e8636e6e5936f9fb2fa01ca8bb36612e78 GIT binary patch literal 2838 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