Skip to content

Commit 3eed0d2

Browse files
committed
add extra test
1 parent 5cd236e commit 3eed0d2

File tree

2 files changed

+75
-9
lines changed

2 files changed

+75
-9
lines changed

src/poetry/console/commands/show.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,22 @@ def handle(self) -> int | None:
8181
if self.option("tree"):
8282
self.init_styles(self.io)
8383

84-
if self.option("why") and self.option("tree") and package is None:
85-
self.line_error(
86-
"<error>Error: --why requires a package when combined with"
87-
" --tree.</error>"
88-
)
84+
if self.option("why"):
85+
if self.option("tree") and package is None:
86+
self.line_error(
87+
"<error>Error: --why requires a package when combined with"
88+
" --tree.</error>"
89+
)
8990

90-
return 1
91+
return 1
92+
93+
if not self.option("tree") and package:
94+
self.line_error(
95+
"<error>Error: --why cannot be used when displaying a single"
96+
" package.</error>"
97+
)
98+
99+
return 1
91100

92101
if self.option("outdated"):
93102
self._io.input.set_option("latest", True)

tests/console/commands/test_show.py

+60-3
Original file line numberDiff line numberDiff line change
@@ -1680,7 +1680,9 @@ def test_show_tree_no_dev(tester: CommandTester, poetry: Poetry, installed: Repo
16801680
assert tester.io.fetch_output() == expected
16811681

16821682

1683-
def test_show_tree_why(tester: CommandTester, poetry: Poetry, installed: Repository):
1683+
def test_show_tree_why_package(
1684+
tester: CommandTester, poetry: Poetry, installed: Repository
1685+
):
16841686
poetry.package.add_dependency(Factory.create_dependency("a", "=0.0.1"))
16851687

16861688
a = get_package("a", "0.0.1")
@@ -1732,8 +1734,63 @@ def test_show_tree_why(tester: CommandTester, poetry: Poetry, installed: Reposit
17321734
expected = """\
17331735
a 0.0.1
17341736
└── b =0.0.1
1735-
└── c =0.0.1
1736-
"""
1737+
└── c =0.0.1 \n"""
1738+
1739+
assert tester.io.fetch_output() == expected
1740+
1741+
1742+
def test_show_tree_why(tester: CommandTester, poetry: Poetry, installed: Repository):
1743+
poetry.package.add_dependency(Factory.create_dependency("a", "=0.0.1"))
1744+
1745+
a = get_package("a", "0.0.1")
1746+
installed.add_package(a)
1747+
a.add_dependency(Factory.create_dependency("b", "=0.0.1"))
1748+
1749+
b = get_package("b", "0.0.1")
1750+
a.add_dependency(Factory.create_dependency("c", "=0.0.1"))
1751+
installed.add_package(b)
1752+
1753+
c = get_package("c", "0.0.1")
1754+
installed.add_package(c)
1755+
1756+
poetry.locker.mock_lock_data(
1757+
{
1758+
"package": [
1759+
{
1760+
"name": "a",
1761+
"version": "0.0.1",
1762+
"dependencies": {"b": "=0.0.1"},
1763+
"python-versions": "*",
1764+
"optional": False,
1765+
},
1766+
{
1767+
"name": "b",
1768+
"version": "0.0.1",
1769+
"dependencies": {"c": "=0.0.1"},
1770+
"python-versions": "*",
1771+
"optional": False,
1772+
},
1773+
{
1774+
"name": "c",
1775+
"version": "0.0.1",
1776+
"python-versions": "*",
1777+
"optional": False,
1778+
},
1779+
],
1780+
"metadata": {
1781+
"python-versions": "*",
1782+
"platform": "*",
1783+
"content-hash": "123456789",
1784+
"hashes": {"a": [], "b": [], "c": []},
1785+
},
1786+
}
1787+
)
1788+
1789+
tester.execute("--why")
1790+
1791+
# this has to be on a single line due to the padding whitespace, which gets stripped
1792+
# by pre-commit.
1793+
expected = """a 0.0.1 \nb 0.0.1 from a \nc 0.0.1 from b \n"""
17371794

17381795
assert tester.io.fetch_output() == expected
17391796

0 commit comments

Comments
 (0)