Commit 78963e69 by Sébastien Eustace

Fix path resolution for transitive file dependencies

#702
parent 5643d1d5
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
- Fixed an error when adding packages with invalid versions. - Fixed an error when adding packages with invalid versions.
- Fixed an error when resolving directory dependencies with no sub dependencies. - Fixed an error when resolving directory dependencies with no sub dependencies.
- Fixed an error when locking packages with no description. - Fixed an error when locking packages with no description.
- Fixed path resolution for transitive file dependencies.
## [0.12.10] - 2018-11-22 ## [0.12.10] - 2018-11-22
......
...@@ -610,7 +610,9 @@ class Provider: ...@@ -610,7 +610,9 @@ class Provider:
) )
) )
if package.dependency.is_directory() and dep.is_directory(): if (package.dependency.is_directory() or package.dependency.is_file()) and (
dep.is_directory() or dep.is_file()
):
if dep.path.as_posix().startswith(package.source_url): if dep.path.as_posix().startswith(package.source_url):
relative = (Path(package.source_url) / dep.path).relative_to( relative = (Path(package.source_url) / dep.path).relative_to(
package.source_url package.source_url
......
[tool.poetry]
name = "project-with-transitive-file-dependencies"
version = "1.2.3"
description = "This is a description"
authors = ["Your Name <you@example.com>"]
license = "MIT"
[tool.poetry.dependencies]
python = "*"
demo = {path = "../../distributions/demo-0.1.0-py2.py3-none-any.whl"}
[tool.poetry.dev-dependencies]
# -*- coding: utf-8 -*-
from distutils.core import setup
packages = ["project_with_extras"]
package_data = {"": ["*"]}
extras_require = {"extras_a": ["pendulum>=1.4.4"], "extras_b": ["cachy>=0.2.0"]}
setup_kwargs = {
"name": "project-with-extras",
"version": "1.2.3",
"description": "This is a description",
"long_description": None,
"author": "Your Name",
"author_email": "you@example.com",
"url": None,
"packages": packages,
"package_data": package_data,
"extras_require": extras_require,
}
setup(**setup_kwargs)
[[package]]
category = "main"
description = ""
name = "demo"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.1.0"
[package.dependencies]
pendulum = ">=1.4.4"
[package.source]
reference = ""
type = "file"
url = "tests/fixtures/directory/project_with_transitive_file_dependencies/../../distributions/demo-0.1.0-py2.py3-none-any.whl"
[[package]]
category = "main"
description = ""
name = "pendulum"
optional = false
python-versions = "*"
version = "1.4.4"
[[package]]
category = "main"
description = ""
name = "project-with-transitive-file-dependencies"
optional = false
python-versions = "*"
version = "1.2.3"
[package.dependencies]
demo = "*"
[package.source]
reference = ""
type = "directory"
url = "tests/fixtures/directory/project_with_transitive_file_dependencies"
[metadata]
content-hash = "123456789"
python-versions = "*"
[metadata.hashes]
demo = ["70e704135718fffbcbf61ed1fc45933cfd86951a744b681000eaaa75da31f17a"]
pendulum = []
project-with-transitive-file-dependencies = []
...@@ -709,6 +709,28 @@ def test_run_installs_with_local_poetry_directory_transitive( ...@@ -709,6 +709,28 @@ def test_run_installs_with_local_poetry_directory_transitive(
assert len(installer.installer.installs) == 2 assert len(installer.installer.installs) == 2
def test_run_installs_with_local_poetry_file_transitive(
installer, locker, repo, package, tmpdir
):
file_path = Path(
"tests/fixtures/directory/project_with_transitive_file_dependencies/"
)
package.add_dependency(
"project-with-transitive-file-dependencies", {"path": str(file_path)}
)
repo.add_package(get_package("pendulum", "1.4.4"))
repo.add_package(get_package("cachy", "0.2.0"))
installer.run()
expected = fixture("with-file-dependency-transitive")
assert locker.written_data == expected
assert len(installer.installer.installs) == 3
def test_run_installs_with_local_setuptools_directory( def test_run_installs_with_local_setuptools_directory(
installer, locker, repo, package, tmpdir installer, locker, repo, package, tmpdir
): ):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment