From 0b33b87bf51170b1f9f63f22bb62208a96f768a8 Mon Sep 17 00:00:00 2001 From: pauleikis Date: Mon, 15 Oct 2018 18:45:39 +0200 Subject: [PATCH] Raise ValueError when repository does not contain any valid package with required version (#421) --- poetry/repositories/legacy_repository.py | 6 ++++++ .../repositories/fixtures/legacy/missing-version.html | 11 +++++++++++ tests/repositories/test_legacy_repository.py | 9 +++++++++ 3 files changed, 26 insertions(+) create mode 100644 tests/repositories/fixtures/legacy/missing-version.html diff --git a/poetry/repositories/legacy_repository.py b/poetry/repositories/legacy_repository.py index bede23defb9..881720baa2a 100644 --- a/poetry/repositories/legacy_repository.py +++ b/poetry/repositories/legacy_repository.py @@ -298,6 +298,12 @@ def _get_release_info(self, name, version): # type: (str, str) -> dict } links = list(page.links_for_version(Version.parse(version))) + if not links: + raise ValueError( + 'No valid distribution links found for package: "{}" version: "{}"'.format( + name, version + ) + ) urls = {} hashes = [] default_link = links[0] diff --git a/tests/repositories/fixtures/legacy/missing-version.html b/tests/repositories/fixtures/legacy/missing-version.html new file mode 100644 index 00000000000..7be5f920fc9 --- /dev/null +++ b/tests/repositories/fixtures/legacy/missing-version.html @@ -0,0 +1,11 @@ + + + + Links for poetry + + +

Links for poetry

+ poetry-0.1.0-py3-none-any.whl
+ + + \ No newline at end of file diff --git a/tests/repositories/test_legacy_repository.py b/tests/repositories/test_legacy_repository.py index 77ffaed82c1..b79cb198bf8 100644 --- a/tests/repositories/test_legacy_repository.py +++ b/tests/repositories/test_legacy_repository.py @@ -1,3 +1,5 @@ +import pytest + from poetry.repositories.legacy_repository import LegacyRepository from poetry.repositories.legacy_repository import Page from poetry.utils._compat import Path @@ -50,3 +52,10 @@ def test_http_basic_auth_repo(mocker): mock.assert_called_once_with("legacy") assert repo._session.auth == ("user1", "p4ss") + + +def test_missing_version(mocker): + repo = MockRepository() + + with pytest.raises(ValueError): + repo._get_release_info("missing_version", "1.1.0")