forked from commitizen-tools/commitizen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_version_command.py
122 lines (102 loc) · 3.64 KB
/
test_version_command.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import platform
import sys
import pytest
from pytest_mock import MockerFixture
from commitizen import cli, commands
from commitizen.__version__ import __version__
from commitizen.config.base_config import BaseConfig
from tests.utils import skip_below_py_3_10
def test_version_for_showing_project_version(config, capsys):
# No version exist
commands.Version(
config,
{"report": False, "project": True, "commitizen": False, "verbose": False},
)()
captured = capsys.readouterr()
assert "No project information in this project." in captured.err
config.settings["version"] = "v0.0.1"
commands.Version(
config,
{"report": False, "project": True, "commitizen": False, "verbose": False},
)()
captured = capsys.readouterr()
assert "v0.0.1" in captured.out
def test_version_for_showing_commitizen_version(config, capsys):
commands.Version(
config,
{"report": False, "project": False, "commitizen": True, "verbose": False},
)()
captured = capsys.readouterr()
assert f"{__version__}" in captured.out
# default showing commitizen version
commands.Version(
config,
{"report": False, "project": False, "commitizen": False, "verbose": False},
)()
captured = capsys.readouterr()
assert f"{__version__}" in captured.out
def test_version_for_showing_both_versions(config, capsys):
commands.Version(
config,
{"report": False, "project": False, "commitizen": False, "verbose": True},
)()
captured = capsys.readouterr()
assert f"Installed Commitizen Version: {__version__}" in captured.out
assert "No project information in this project." in captured.err
config.settings["version"] = "v0.0.1"
commands.Version(
config,
{"report": False, "project": False, "commitizen": False, "verbose": True},
)()
captured = capsys.readouterr()
expected_out = (
f"Installed Commitizen Version: {__version__}\n" f"Project Version: v0.0.1"
)
assert expected_out in captured.out
def test_version_for_showing_commitizen_system_info(config, capsys):
commands.Version(
config,
{"report": True, "project": False, "commitizen": False, "verbose": False},
)()
captured = capsys.readouterr()
assert f"Commitizen Version: {__version__}" in captured.out
assert f"Python Version: {sys.version}" in captured.out
assert f"Operating System: {platform.system()}" in captured.out
@pytest.mark.parametrize("project", (True, False))
@pytest.mark.usefixtures("tmp_git_project")
def test_version_use_version_provider(
mocker: MockerFixture,
config: BaseConfig,
capsys: pytest.CaptureFixture,
project: bool,
):
version = "0.0.0"
mock = mocker.MagicMock(name="provider")
mock.get_version.return_value = version
get_provider = mocker.patch(
"commitizen.commands.version.get_provider", return_value=mock
)
commands.Version(
config,
{
"report": False,
"project": project,
"commitizen": False,
"verbose": not project,
},
)()
captured = capsys.readouterr()
assert version in captured.out
get_provider.assert_called_once()
mock.get_version.assert_called_once()
mock.set_version.assert_not_called()
@skip_below_py_3_10
def test_version_command_shows_description_when_use_help_option(
mocker: MockerFixture, capsys, file_regression
):
testargs = ["cz", "version", "--help"]
mocker.patch.object(sys, "argv", testargs)
with pytest.raises(SystemExit):
cli.main()
out, _ = capsys.readouterr()
file_regression.check(out, extension=".txt")