Skip to content

Commit 6e98f8e

Browse files
committed
refactor(version): separate error handling for the version command (--tag/--major/--minor) and their test cases
1 parent 82ed078 commit 6e98f8e

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

commitizen/commands/version.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ def __call__(self) -> None:
7272
)
7373
return
7474

75-
if (
76-
self.arguments.get("major")
77-
or self.arguments.get("minor")
78-
or self.arguments.get("tag")
79-
):
80-
out.error(
81-
"Major or minor or tag can only be used with --project or --verbose."
82-
)
75+
if self.arguments.get("major"):
76+
out.error("Major can only be used with --project or --verbose.")
77+
return
78+
if self.arguments.get("minor"):
79+
out.error("Minor can only be used with --project or --verbose.")
80+
return
81+
if self.arguments.get("tag"):
82+
out.error("Tag can only be used with --project or --verbose.")
8383
return
8484

8585
# If no arguments are provided, just show the installed commitizen version

tests/commands/test_version_command.py

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -147,20 +147,43 @@ def test_version_just_minor(config, capsys, version: str, expected_version: str)
147147
assert expected_version == captured.out
148148

149149

150-
@pytest.mark.parametrize("argument", ("major", "minor"))
151-
def test_version_just_major_error_no_project(config, capsys, argument: str):
150+
def test_version_major_error_no_project(config, capsys):
151+
"""Test --major requires --project or --verbose"""
152152
commands.Version(
153153
config,
154154
{
155-
argument: True, # type: ignore[misc]
155+
"major": True,
156156
},
157157
)()
158158
captured = capsys.readouterr()
159159
assert not captured.out
160-
assert (
161-
"Major or minor or tag can only be used with --project or --verbose."
162-
in captured.err
163-
)
160+
assert "Major can only be used with --project or --verbose." in captured.err
161+
162+
163+
def test_version_minor_error_no_project(config, capsys):
164+
"""Test --minor requires --project or --verbose"""
165+
commands.Version(
166+
config,
167+
{
168+
"minor": True,
169+
},
170+
)()
171+
captured = capsys.readouterr()
172+
assert not captured.out
173+
assert "Minor can only be used with --project or --verbose." in captured.err
174+
175+
176+
def test_version_tag_error_no_project(config, capsys):
177+
"""Test --tag requires --project or --verbose"""
178+
commands.Version(
179+
config,
180+
{
181+
"tag": True,
182+
},
183+
)()
184+
captured = capsys.readouterr()
185+
assert not captured.out
186+
assert "Tag can only be used with --project or --verbose." in captured.err
164187

165188

166189
@pytest.mark.parametrize(
@@ -187,19 +210,3 @@ def test_version_with_tag_format(
187210
)()
188211
captured = capsys.readouterr()
189212
assert captured.out == expected_output
190-
191-
192-
def test_version_tag_without_project_error(config, capsys):
193-
"""Test --tag requires --project or --verbose"""
194-
commands.Version(
195-
config,
196-
{
197-
"tag": True,
198-
},
199-
)()
200-
captured = capsys.readouterr()
201-
assert not captured.out
202-
assert (
203-
"Major or minor or tag can only be used with --project or --verbose."
204-
in captured.err
205-
)

0 commit comments

Comments
 (0)