Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
increase test coverage
  • Loading branch information
radoering committed Jul 31, 2022
commit cf81c95783a076fb384d858e14bbdfd9f9d6fac2
108 changes: 108 additions & 0 deletions tests/puzzle/test_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@
import pytest

from cleo.io.null_io import NullIO
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.directory_dependency import DirectoryDependency
from poetry.core.packages.file_dependency import FileDependency
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.packages.url_dependency import URLDependency
from poetry.core.packages.vcs_dependency import VCSDependency

from poetry.factory import Factory
Expand All @@ -27,6 +30,9 @@
from pytest_mock import MockerFixture


SOME_URL = "https://example.com/path.tar.gz"


class MockEnv(BaseMockEnv):
def run(self, bin: str, *args: str) -> None:
raise EnvCommandError(CalledProcessError(1, "python", output=""))
Expand Down Expand Up @@ -55,6 +61,108 @@ def provider(root: ProjectPackage, pool: Pool) -> Provider:
return Provider(root, pool, NullIO())


@pytest.mark.parametrize(
"dependency, expected",
[
(Dependency("foo", "<2"), [Package("foo", "1")]),
(Dependency("foo", "<2", extras=["bar"]), [Package("foo", "1")]),
(Dependency("foo", ">=1"), [Package("foo", "2"), Package("foo", "1")]),
(
Dependency("foo", ">=1a"),
[
Package("foo", "3a"),
Package("foo", "2"),
Package("foo", "2a"),
Package("foo", "1"),
],
),
(
Dependency("foo", ">=1", allows_prereleases=True),
[
Package("foo", "3a"),
Package("foo", "2"),
Package("foo", "2a"),
Package("foo", "1"),
],
),
],
)
def test_search_for(
provider: Provider,
repository: Repository,
dependency: Dependency,
expected: list[Package],
) -> None:
foo1 = Package("foo", "1")
foo2a = Package("foo", "2a")
foo2 = Package("foo", "2")
foo3a = Package("foo", "3a")
repository.add_package(foo1)
repository.add_package(foo2a)
repository.add_package(foo2)
repository.add_package(foo3a)
assert provider.search_for(dependency) == expected


@pytest.mark.parametrize(
"dependency, direct_origin_dependency, expected_before, expected_after",
[
(
Dependency("foo", ">=1"),
URLDependency("foo", SOME_URL),
[Package("foo", "3")],
[Package("foo", "2a", source_type="url", source_url=SOME_URL)],
),
(
Dependency("foo", ">=2"),
URLDependency("foo", SOME_URL),
[Package("foo", "3")],
[],
),
(
Dependency("foo", ">=1", extras=["bar"]),
URLDependency("foo", SOME_URL),
[Package("foo", "3")],
[Package("foo", "2a", source_type="url", source_url=SOME_URL)],
),
(
Dependency("foo", ">=1"),
URLDependency("foo", SOME_URL, extras=["baz"]),
[Package("foo", "3")],
[Package("foo", "2a", source_type="url", source_url=SOME_URL)],
),
(
Dependency("foo", ">=1", extras=["bar"]),
URLDependency("foo", SOME_URL, extras=["baz"]),
[Package("foo", "3")],
[Package("foo", "2a", source_type="url", source_url=SOME_URL)],
),
],
)
def test_search_for_direct_origin_and_extras(
provider: Provider,
repository: Repository,
mocker: MockerFixture,
dependency: Dependency,
direct_origin_dependency: Dependency,
expected_before: list[Package],
expected_after: list[Package],
) -> None:
foo2a_direct_origin = Package("foo", "2a", source_type="url", source_url=SOME_URL)
mocker.patch(
"poetry.puzzle.provider.Provider.search_for_direct_origin_dependency",
return_value=foo2a_direct_origin,
)
foo2a = Package("foo", "2a")
foo3 = Package("foo", "3")
repository.add_package(foo2a)
repository.add_package(foo3)

assert provider.search_for(dependency) == expected_before
assert provider.search_for(direct_origin_dependency) == [foo2a_direct_origin]
assert provider.search_for(dependency) == expected_after


@pytest.mark.parametrize("value", [True, False])
def test_search_for_vcs_retains_develop_flag(provider: Provider, value: bool):
dependency = VCSDependency(
Expand Down