Skip to content

Commit

Permalink
inspection/info: correctly raise PackageInfoError
Browse files Browse the repository at this point in the history
Previously, when processing wheel files, PackageInfo incorrectly
returned an empty instance. This change ensures a PackageInfoError
is correctly raised.
  • Loading branch information
abn committed Mar 23, 2024
1 parent 7181557 commit b391137
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/poetry/inspection/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -545,8 +545,8 @@ def from_wheel(cls, path: Path) -> PackageInfo:
try:
wheel = pkginfo.Wheel(str(path))
return cls._from_distribution(wheel)
except ValueError:
return PackageInfo()
except ValueError as e:
raise PackageInfoError(path, e)

@classmethod
def from_bdist(cls, path: Path) -> PackageInfo:
Expand Down
30 changes: 24 additions & 6 deletions tests/repositories/test_http_repository.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import annotations

import contextlib
import shutil

from pathlib import Path
Expand All @@ -12,6 +13,7 @@
from packaging.metadata import parse_email
from poetry.core.packages.utils.link import Link

from poetry.inspection.info import PackageInfoError
from poetry.inspection.lazy_wheel import HTTPRangeRequestUnsupported
from poetry.repositories.http_repository import HTTPRepository
from poetry.utils.helpers import HTTPRangeRequestSupported
Expand Down Expand Up @@ -116,41 +118,57 @@ def test_get_info_from_wheel_state_sequence(mocker: MockerFixture) -> None:

# 1. range request and download
mock_metadata_from_wheel_url.side_effect = HTTPRangeRequestUnsupported
repo._get_info_from_wheel(link)

with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 1
assert mock_download.call_count == 1
assert mock_download.call_args[1]["raise_accepts_ranges"] is False

# 2. only download
repo._get_info_from_wheel(link)
with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 1
assert mock_download.call_count == 2
assert mock_download.call_args[1]["raise_accepts_ranges"] is True

# 3. download and range request
mock_metadata_from_wheel_url.side_effect = None
mock_download.side_effect = HTTPRangeRequestSupported
repo._get_info_from_wheel(link)

with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 2
assert mock_download.call_count == 3
assert mock_download.call_args[1]["raise_accepts_ranges"] is True

# 4. only range request
repo._get_info_from_wheel(link)
with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 3
assert mock_download.call_count == 3

# 5. range request and download
mock_metadata_from_wheel_url.side_effect = HTTPRangeRequestUnsupported
mock_download.side_effect = None
repo._get_info_from_wheel(link)

with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 4
assert mock_download.call_count == 4
assert mock_download.call_args[1]["raise_accepts_ranges"] is False

# 6. only range request
mock_metadata_from_wheel_url.side_effect = None
repo._get_info_from_wheel(link)

with contextlib.suppress(PackageInfoError):
repo._get_info_from_wheel(link)

assert mock_metadata_from_wheel_url.call_count == 5
assert mock_download.call_count == 4

Expand Down

0 comments on commit b391137

Please sign in to comment.