Commit 979d9458 by Mathieu Kniewallner Committed by Arun Babu Neelicattu

feat(commands/remove): canonicalize package name when looking for existing packages

parent 2ca2080c
...@@ -6,6 +6,8 @@ from cleo.helpers import argument ...@@ -6,6 +6,8 @@ from cleo.helpers import argument
from cleo.helpers import option from cleo.helpers import option
from tomlkit.toml_document import TOMLDocument from tomlkit.toml_document import TOMLDocument
from poetry.utils.helpers import canonicalize_name
try: try:
from poetry.core.packages.dependency_group import MAIN_GROUP from poetry.core.packages.dependency_group import MAIN_GROUP
...@@ -129,7 +131,7 @@ list of installed packages ...@@ -129,7 +131,7 @@ list of installed packages
for package in packages: for package in packages:
for existing_package in section_keys: for existing_package in section_keys:
if existing_package.lower() == package.lower(): if canonicalize_name(existing_package) == canonicalize_name(package):
del section[existing_package] del section[existing_package]
removed.append(package) removed.append(package)
group.remove_dependency(package) group.remove_dependency(package)
......
...@@ -183,6 +183,61 @@ baz = "^1.0.0" ...@@ -183,6 +183,61 @@ baz = "^1.0.0"
assert "[tool.poetry.group]" not in content.as_string() assert "[tool.poetry.group]" not in content.as_string()
def test_remove_canonicalized_named_removes_dependency_correctly(
tester: CommandTester,
app: PoetryTestApplication,
repo: TestRepository,
command_tester_factory: CommandTesterFactory,
installed: Repository,
):
"""
Removing a dependency using a canonicalized named removes the dependency.
"""
installed.add_package(Package("foo-bar", "2.0.0"))
repo.add_package(Package("foo-bar", "2.0.0"))
repo.add_package(Package("baz", "1.0.0"))
content = app.poetry.file.read()
groups_content = tomlkit.parse(
"""\
[tool.poetry.group.bar.dependencies]
foo-bar = "^2.0.0"
baz = "^1.0.0"
"""
)
content["tool"]["poetry"]["dependencies"]["foo-bar"] = "^2.0.0"
content["tool"]["poetry"].value._insert_after(
"dependencies", "group", groups_content["tool"]["poetry"]["group"]
)
app.poetry.file.write(content)
app.poetry.package.add_dependency(Factory.create_dependency("foo-bar", "^2.0.0"))
app.poetry.package.add_dependency(
Factory.create_dependency("foo-bar", "^2.0.0", groups=["bar"])
)
app.poetry.package.add_dependency(
Factory.create_dependency("baz", "^1.0.0", groups=["bar"])
)
tester.execute("Foo_Bar")
content = app.poetry.file.read()["tool"]["poetry"]
assert "foo-bar" not in content["dependencies"]
assert "foo-bar" not in content["group"]["bar"]["dependencies"]
assert "baz" in content["group"]["bar"]["dependencies"]
expected = """\
[tool.poetry.group.bar.dependencies]
baz = "^1.0.0"
"""
assert expected in content.as_string()
def test_remove_command_should_not_write_changes_upon_installer_errors( def test_remove_command_should_not_write_changes_upon_installer_errors(
tester: CommandTester, tester: CommandTester,
app: PoetryTestApplication, app: PoetryTestApplication,
......
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