Skip to content

Commit 609cacd

Browse files
sarsharmaLee-W
authored andcommitted
feat: utility for showing system information
command to show system info output for bug reports Issue #426
1 parent ca31452 commit 609cacd

File tree

4 files changed

+60
-8
lines changed

4 files changed

+60
-8
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,18 @@ If applicable, add screenshots to help explain your problem.
2828

2929
## Environment
3030
<!--
31+
For older commitizen versions, please include the
32+
output of the following commands manually:
33+
3134
cz version
3235
python --version
3336
python3 -c "import platform; print(platform.system())"
3437
-->
35-
38+
Add output of the following command to include the following
3639
- commitizen version:
3740
- python version:
3841
- operating system:
42+
```bash
43+
cz version --report
44+
```
45+

commitizen/cli.py

+6
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,12 @@
227227
),
228228
"func": commands.Version,
229229
"arguments": [
230+
{
231+
"name": ["-r", "--report"],
232+
"help": "get system information for reporting bugs",
233+
"action": "store_true",
234+
"exclusive_group": "group1",
235+
},
230236
{
231237
"name": ["-p", "--project"],
232238
"help": "get the version of the current project",

commitizen/commands/version.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import platform
2+
import sys
3+
14
from commitizen import out
25
from commitizen.__version__ import __version__
36
from commitizen.config import BaseConfig
@@ -9,9 +12,15 @@ class Version:
912
def __init__(self, config: BaseConfig, *args):
1013
self.config: BaseConfig = config
1114
self.parameter = args[0]
15+
self.operating_system = platform.system()
16+
self.python_version = sys.version
1217

1318
def __call__(self):
14-
if self.parameter.get("project"):
19+
if self.parameter.get("report"):
20+
out.write(f"Commitizen Version: {__version__}")
21+
out.write(f"Python Version: {self.python_version}")
22+
out.write(f"Operating System: {self.operating_system}")
23+
elif self.parameter.get("project"):
1524
version = self.config.settings["version"]
1625
if version:
1726
out.write(f"{version}")
+36-6
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,72 @@
1+
import platform
2+
import sys
3+
14
from commitizen import commands
25
from commitizen.__version__ import __version__
36

47

58
def test_version_for_showing_project_version(config, capsys):
69
# No version exist
7-
commands.Version(config, {"project": True, "commitizen": False, "verbose": False})()
10+
commands.Version(
11+
config,
12+
{"report": False, "project": True, "commitizen": False, "verbose": False},
13+
)()
814
captured = capsys.readouterr()
915
assert "No project information in this project." in captured.err
1016

1117
config.settings["version"] = "v0.0.1"
12-
commands.Version(config, {"project": True, "commitizen": False, "verbose": False})()
18+
commands.Version(
19+
config,
20+
{"report": False, "project": True, "commitizen": False, "verbose": False},
21+
)()
1322
captured = capsys.readouterr()
1423
assert "v0.0.1" in captured.out
1524

1625

1726
def test_version_for_showing_commitizen_version(config, capsys):
18-
commands.Version(config, {"project": False, "commitizen": True, "verbose": False})()
27+
commands.Version(
28+
config,
29+
{"report": False, "project": False, "commitizen": True, "verbose": False},
30+
)()
1931
captured = capsys.readouterr()
2032
assert f"{__version__}" in captured.out
2133

2234
# default showing commitizen version
2335
commands.Version(
24-
config, {"project": False, "commitizen": False, "verbose": False}
36+
config,
37+
{"report": False, "project": False, "commitizen": False, "verbose": False},
2538
)()
2639
captured = capsys.readouterr()
2740
assert f"{__version__}" in captured.out
2841

2942

3043
def test_version_for_showing_both_versions(config, capsys):
31-
commands.Version(config, {"project": False, "commitizen": False, "verbose": True})()
44+
commands.Version(
45+
config,
46+
{"report": False, "project": False, "commitizen": False, "verbose": True},
47+
)()
3248
captured = capsys.readouterr()
3349
assert f"Installed Commitizen Version: {__version__}" in captured.out
3450
assert "No project information in this project." in captured.err
3551

3652
config.settings["version"] = "v0.0.1"
37-
commands.Version(config, {"project": False, "commitizen": False, "verbose": True})()
53+
commands.Version(
54+
config,
55+
{"report": False, "project": False, "commitizen": False, "verbose": True},
56+
)()
3857
captured = capsys.readouterr()
3958
expected_out = (
4059
f"Installed Commitizen Version: {__version__}\n" f"Project Version: v0.0.1"
4160
)
4261
assert expected_out in captured.out
62+
63+
64+
def test_version_for_showing_commitizen_system_info(config, capsys):
65+
commands.Version(
66+
config,
67+
{"report": True, "project": False, "commitizen": False, "verbose": False},
68+
)()
69+
captured = capsys.readouterr()
70+
assert f"Commitizen Version: {__version__}" in captured.out
71+
assert f"Python Version: {sys.version}" in captured.out
72+
assert f"Operating System: {platform.system()}" in captured.out

0 commit comments

Comments
 (0)