Skip to content

Commit a7079ac

Browse files
authored
remove: improve error message when trying to remove a package from a project without any dependencies (#9918)
1 parent 2da550a commit a7079ac

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

src/poetry/console/commands/remove.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ def handle(self) -> int:
6868
if group is None:
6969
# remove from all groups
7070
removed = set()
71-
group_sections = [
72-
(
73-
MAIN_GROUP,
74-
project_content.get("dependencies", []),
75-
poetry_content.get("dependencies", {}),
71+
group_sections = []
72+
project_dependencies = project_content.get("dependencies", [])
73+
poetry_dependencies = poetry_content.get("dependencies", {})
74+
if project_dependencies or poetry_dependencies:
75+
group_sections.append(
76+
(MAIN_GROUP, project_dependencies, poetry_dependencies)
7677
)
77-
]
7878
group_sections.extend(
7979
(group_name, [], group_section.get("dependencies", {}))
8080
for group_name, group_section in poetry_content.get("group", {}).items()

tests/console/commands/test_remove.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,44 @@ def test_remove_canonicalized_named_removes_dependency_correctly(
358358
assert expected in string_content
359359

360360

361+
def test_remove_package_does_not_exist(
362+
tester: CommandTester,
363+
app: PoetryTestApplication,
364+
repo: TestRepository,
365+
command_tester_factory: CommandTesterFactory,
366+
) -> None:
367+
repo.add_package(Package("foo", "2.0.0"))
368+
369+
original_content = app.poetry.file.read().as_string()
370+
371+
with pytest.raises(ValueError) as e:
372+
tester.execute("foo")
373+
374+
assert str(e.value) == "The following packages were not found: foo"
375+
assert app.poetry.file.read().as_string() == original_content
376+
377+
378+
def test_remove_package_no_dependencies(
379+
tester: CommandTester,
380+
app: PoetryTestApplication,
381+
repo: TestRepository,
382+
command_tester_factory: CommandTesterFactory,
383+
) -> None:
384+
repo.add_package(Package("foo", "2.0.0"))
385+
386+
pyproject: dict[str, Any] = app.poetry.file.read()
387+
assert "dependencies" not in pyproject["project"]
388+
del pyproject["tool"]["poetry"]["dependencies"]
389+
pyproject = cast("TOMLDocument", pyproject)
390+
app.poetry.file.write(pyproject)
391+
app.poetry.package._dependency_groups = {}
392+
393+
with pytest.raises(ValueError) as e:
394+
tester.execute("foo")
395+
396+
assert str(e.value) == "The following packages were not found: foo"
397+
398+
361399
def test_remove_command_should_not_write_changes_upon_installer_errors(
362400
tester: CommandTester,
363401
app: PoetryTestApplication,

0 commit comments

Comments
 (0)