Commit 5ad517ca by David Hotham Committed by Bjorn Neergaard

disambiguate direct dependencies in show-outdated

parent 27fa9c1e
......@@ -505,7 +505,7 @@ lists all packages available."""
requires = root.all_requires
for dep in requires:
if dep.name == package.name:
if dep.name == package.name and dep.source_type == package.source_type:
provider = Provider(root, self.poetry.pool, NullIO())
return provider.search_for_direct_origin_dependency(dep)
......
......@@ -243,7 +243,7 @@ class Provider:
else:
raise RuntimeError(
f"Unknown direct dependency type {dependency.source_type}"
f"{dependency}: unknown direct dependency type {dependency.source_type}"
)
if dependency.is_vcs():
......
......@@ -1924,3 +1924,71 @@ def test_show_errors_without_lock_file(tester: CommandTester, poetry: Poetry):
expected = "Error: poetry.lock not found. Run `poetry lock` to create it.\n"
assert tester.io.fetch_error() == expected
assert tester.status_code == 1
def test_show_dependency_installed_from_git_in_dev(
tester: CommandTester,
poetry: Poetry,
installed: Repository,
repo: TestRepository,
):
# Add a regular dependency for a package in main, and a git dependency for the same
# package in dev.
poetry.package.add_dependency(Factory.create_dependency("demo", "^0.1.1"))
poetry.package.add_dependency(
Factory.create_dependency(
"demo", {"git": "https://github.com/demo/demo.git"}, groups=["dev"]
)
)
demo_011 = get_package("demo", "0.1.1")
demo_011.description = "Demo package"
repo.add_package(demo_011)
pendulum_200 = get_package("pendulum", "2.0.0")
pendulum_200.description = "Pendulum package"
repo.add_package(pendulum_200)
# The git package is the one that gets into the lockfile.
poetry.locker.mock_lock_data(
{
"package": [
{
"name": "demo",
"version": "0.1.2",
"description": "Demo package",
"category": "main",
"optional": False,
"python-versions": "*",
"develop": False,
"source": {
"type": "git",
"reference": MOCK_DEFAULT_GIT_REVISION,
"resolved_reference": MOCK_DEFAULT_GIT_REVISION,
"url": "https://github.com/demo/demo.git",
},
},
{
"name": "pendulum",
"version": "2.0.0",
"description": "Pendulum package",
"category": "main",
"optional": False,
"platform": "*",
"python-versions": "*",
"checksum": [],
},
],
"metadata": {
"python-versions": "*",
"platform": "*",
"content-hash": "123456789",
"hashes": {"demo": [], "pendulum": []},
},
}
)
# Nothing needs updating, there is no confusion between the git and not-git
# packages.
tester.execute("--outdated")
assert tester.io.fetch_output() == ""
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