175 lines
4.0 KiB
Python
175 lines
4.0 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import pytest
|
|
|
|
from poetry.config.source import Source
|
|
from poetry.repositories.repository_pool import Priority
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
from poetry.poetry import Poetry
|
|
from tests.types import CommandTesterFactory
|
|
from tests.types import ProjectFactory
|
|
|
|
|
|
@pytest.fixture
|
|
def source_one() -> Source:
|
|
return Source(name="one", url="https://one.com")
|
|
|
|
|
|
@pytest.fixture
|
|
def source_two() -> Source:
|
|
return Source(name="two", url="https://two.com")
|
|
|
|
|
|
@pytest.fixture
|
|
def source_default_deprecated() -> Source:
|
|
return Source(name="default", url="https://default.com", default=True)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_secondary_deprecated() -> Source:
|
|
return Source(name="secondary", url="https://secondary.com", secondary=True)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_primary() -> Source:
|
|
return Source(name="primary", url="https://primary.com", priority=Priority.PRIMARY)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_default() -> Source:
|
|
return Source(name="default", url="https://default.com", priority=Priority.DEFAULT)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_secondary() -> Source:
|
|
return Source(
|
|
name="secondary", url="https://secondary.com", priority=Priority.SECONDARY
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_supplemental() -> Source:
|
|
return Source(
|
|
name="supplemental",
|
|
url="https://supplemental.com",
|
|
priority=Priority.SUPPLEMENTAL,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_explicit() -> Source:
|
|
return Source(
|
|
name="explicit", url="https://explicit.com", priority=Priority.EXPLICIT
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def source_pypi() -> Source:
|
|
return Source(name="PyPI")
|
|
|
|
|
|
@pytest.fixture
|
|
def source_pypi_explicit() -> Source:
|
|
return Source(name="PyPI", priority=Priority.EXPLICIT)
|
|
|
|
|
|
_existing_source = Source(name="existing", url="https://existing.com")
|
|
|
|
|
|
@pytest.fixture
|
|
def source_existing() -> Source:
|
|
return _existing_source
|
|
|
|
|
|
PYPROJECT_WITHOUT_SOURCES = """
|
|
[tool.poetry]
|
|
name = "source-command-test"
|
|
version = "0.1.0"
|
|
description = ""
|
|
authors = ["Poetry Tester <tester@poetry.org>"]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.9"
|
|
|
|
[tool.poetry.dev-dependencies]
|
|
"""
|
|
|
|
|
|
PYPROJECT_WITH_SOURCES = f"""{PYPROJECT_WITHOUT_SOURCES}
|
|
|
|
[[tool.poetry.source]]
|
|
name = "{_existing_source.name}"
|
|
url = "{_existing_source.url}"
|
|
"""
|
|
|
|
|
|
PYPROJECT_WITH_PYPI = f"""{PYPROJECT_WITHOUT_SOURCES}
|
|
|
|
[[tool.poetry.source]]
|
|
name = "PyPI"
|
|
"""
|
|
|
|
|
|
PYPROJECT_WITH_PYPI_AND_OTHER = f"""{PYPROJECT_WITH_SOURCES}
|
|
|
|
[[tool.poetry.source]]
|
|
name = "PyPI"
|
|
"""
|
|
|
|
|
|
@pytest.fixture
|
|
def poetry_without_source(project_factory: ProjectFactory) -> Poetry:
|
|
return project_factory(pyproject_content=PYPROJECT_WITHOUT_SOURCES)
|
|
|
|
|
|
@pytest.fixture
|
|
def poetry_with_source(project_factory: ProjectFactory) -> Poetry:
|
|
return project_factory(pyproject_content=PYPROJECT_WITH_SOURCES)
|
|
|
|
|
|
@pytest.fixture
|
|
def poetry_with_pypi(project_factory: ProjectFactory) -> Poetry:
|
|
return project_factory(pyproject_content=PYPROJECT_WITH_PYPI)
|
|
|
|
|
|
@pytest.fixture
|
|
def poetry_with_pypi_and_other(project_factory: ProjectFactory) -> Poetry:
|
|
return project_factory(pyproject_content=PYPROJECT_WITH_PYPI_AND_OTHER)
|
|
|
|
|
|
@pytest.fixture
|
|
def add_multiple_sources(
|
|
command_tester_factory: CommandTesterFactory,
|
|
poetry_with_source: Poetry,
|
|
source_one: Source,
|
|
source_two: Source,
|
|
) -> None:
|
|
add = command_tester_factory("source add", poetry=poetry_with_source)
|
|
for source in [source_one, source_two]:
|
|
add.execute(f"{source.name} {source.url}")
|
|
|
|
|
|
@pytest.fixture
|
|
def add_all_source_types(
|
|
command_tester_factory: CommandTesterFactory,
|
|
poetry_with_source: Poetry,
|
|
source_primary: Source,
|
|
source_default: Source,
|
|
source_secondary: Source,
|
|
source_supplemental: Source,
|
|
source_explicit: Source,
|
|
) -> None:
|
|
add = command_tester_factory("source add", poetry=poetry_with_source)
|
|
for source in [
|
|
source_primary,
|
|
source_default,
|
|
source_secondary,
|
|
source_supplemental,
|
|
source_explicit,
|
|
]:
|
|
add.execute(f"{source.name} {source.url} --priority={source.name}")
|