From addea2f55ed281b0f01d78aaa768092e957ff1b5 Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu Date: Wed, 6 Oct 2021 16:05:14 +0200 Subject: [PATCH 1/4] tests/factory: fix python constraint check This change ensures that python_version comparison uses parsed versions and does not fail with changes in pretty output. --- tests/test_factory.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_factory.py b/tests/test_factory.py index 20d2f09cf7b..072f7ebb01a 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -8,6 +8,7 @@ from entrypoints import EntryPoint +from poetry.core.semver.helpers import parse_constraint from poetry.core.toml.file import TOMLFile from poetry.factory import Factory from poetry.plugins.plugin import Plugin @@ -70,7 +71,7 @@ def test_create_poetry(): pathlib2 = dependencies["pathlib2"] assert pathlib2.pretty_constraint == "^2.2" - assert pathlib2.python_versions == "~2.7" + assert parse_constraint(pathlib2.python_versions) == parse_constraint("~2.7") assert not pathlib2.is_optional() demo = dependencies["demo"] From 3b36be5b0cb3e9cb9373ad1b9f19af18912d1748 Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu Date: Wed, 6 Oct 2021 16:08:56 +0200 Subject: [PATCH 2/4] tests/solver: handle poetry-core source ref changes This change ensures that the tests support upcoming (>1.1.0a6) changes dropping default branch assumptions for vcs dependencies. --- tests/puzzle/test_solver.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/tests/puzzle/test_solver.py b/tests/puzzle/test_solver.py index 89cb8a2ddef..4c991225ebe 100644 --- a/tests/puzzle/test_solver.py +++ b/tests/puzzle/test_solver.py @@ -7,6 +7,7 @@ from poetry.core.packages.dependency import Dependency from poetry.core.packages.package import Package from poetry.core.packages.project_package import ProjectPackage +from poetry.core.packages.vcs_dependency import VCSDependency from poetry.core.version.markers import parse_marker from poetry.factory import Factory from poetry.puzzle import Solver @@ -24,6 +25,12 @@ from tests.repositories.test_pypi_repository import MockRepository as MockPyPIRepository +DEFAULT_SOURCE_REF = ( + VCSDependency("poetry", "git", "git@github.com:python-poetry/poetry.git").branch + or "HEAD" +) + + class Provider(BaseProvider): def set_package_python_versions(self, python_versions): self._package.python_versions = python_versions @@ -1230,7 +1237,7 @@ def test_solver_can_resolve_git_dependencies(solver, repo, package): "0.1.2", source_type="git", source_url="https://github.com/demo/demo.git", - source_reference="master", + source_reference=DEFAULT_SOURCE_REF, source_resolved_reference="9cf87a285a2d3fbb0b9fa621997b3acc3631ed24", ) @@ -1242,7 +1249,7 @@ def test_solver_can_resolve_git_dependencies(solver, repo, package): op = ops[1] assert op.package.source_type == "git" - assert op.package.source_reference == "master" + assert op.package.source_reference == DEFAULT_SOURCE_REF assert op.package.source_resolved_reference.startswith("9cf87a2") @@ -1265,7 +1272,7 @@ def test_solver_can_resolve_git_dependencies_with_extras(solver, repo, package): "0.1.2", source_type="git", source_url="https://github.com/demo/demo.git", - source_reference="master", + source_reference=DEFAULT_SOURCE_REF, source_resolved_reference="9cf87a285a2d3fbb0b9fa621997b3acc3631ed24", ) @@ -1577,7 +1584,7 @@ def test_solver_git_dependencies_update(solver, repo, package, installed): "0.1.2", source_type="git", source_url="https://github.com/demo/demo.git", - source_reference="master", + source_reference=DEFAULT_SOURCE_REF, source_resolved_reference="123456", ) demo = Package( @@ -1585,7 +1592,7 @@ def test_solver_git_dependencies_update(solver, repo, package, installed): "0.1.2", source_type="git", source_url="https://github.com/demo/demo.git", - source_reference="master", + source_reference=DEFAULT_SOURCE_REF, source_resolved_reference="9cf87a285a2d3fbb0b9fa621997b3acc3631ed24", ) installed.add_package(demo_installed) @@ -1608,7 +1615,7 @@ def test_solver_git_dependencies_update(solver, repo, package, installed): assert op.job_type == "update" assert op.package.source_type == "git" - assert op.package.source_reference == "master" + assert op.package.source_reference == DEFAULT_SOURCE_REF assert op.package.source_resolved_reference.startswith("9cf87a2") assert op.initial_package.source_resolved_reference == "123456" @@ -2359,8 +2366,8 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies( "0.1.2", source_type="git", source_url="https://github.com/demo/demo.git", - source_reference="master", - source_resolved_reference="commit", + source_reference=DEFAULT_SOURCE_REF, + source_resolved_reference="9cf87a285a2d3fbb0b9fa621997b3acc3631ed24", ) installed.add_package(git_package) From a044b6d59e0368e2a999a138e905a926c1701c7a Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu Date: Wed, 6 Oct 2021 16:12:41 +0200 Subject: [PATCH 3/4] provider: fix vcs source/resolved ref propagation This change ensures that when complete packages are created dependency inherits source and resolved refs from package. --- poetry/puzzle/provider.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/poetry/puzzle/provider.py b/poetry/puzzle/provider.py index 694cfee8d5f..dfa2d9d0bc7 100644 --- a/poetry/puzzle/provider.py +++ b/poetry/puzzle/provider.py @@ -184,6 +184,9 @@ def search_for_vcs(self, dependency: VCSDependency) -> List[Package]: dependency._constraint = package.version dependency._pretty_constraint = package.version.text + dependency._source_reference = package.source_reference + dependency._source_resolved_reference = package.source_resolved_reference + self._deferred_cache[dependency] = package return [package] From f5d46f916f57b0ac44219335e1152906a4d4ce69 Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu Date: Wed, 6 Oct 2021 16:15:02 +0200 Subject: [PATCH 4/4] provider: fix vcs subdirectory propagation This change ensures that when complete packages are created dependency inherits subdirectory from package if supported. --- poetry/puzzle/provider.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/poetry/puzzle/provider.py b/poetry/puzzle/provider.py index dfa2d9d0bc7..d77d7936aa5 100644 --- a/poetry/puzzle/provider.py +++ b/poetry/puzzle/provider.py @@ -187,6 +187,12 @@ def search_for_vcs(self, dependency: VCSDependency) -> List[Package]: dependency._source_reference = package.source_reference dependency._source_resolved_reference = package.source_resolved_reference + if hasattr(package, "source_subdirectory") and hasattr( + dependency, "_source_subdirectory" + ): + # this is supported only for poetry-core >= 1.1.0a7 + dependency._source_subdirectory = package.source_subdirectory + self._deferred_cache[dependency] = package return [package]