-
-
Notifications
You must be signed in to change notification settings - Fork 279
/
Copy pathtest_cli.py
94 lines (65 loc) · 2.53 KB
/
test_cli.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
import subprocess
import sys
import pytest
from commitizen import cli
from commitizen.exceptions import ExpectedExit, NoCommandFoundError, NotAGitProjectError
def test_sysexit_no_argv(mocker, capsys):
testargs = ["cz"]
mocker.patch.object(sys, "argv", testargs)
with pytest.raises(ExpectedExit):
cli.main()
out, _ = capsys.readouterr()
assert out.startswith("usage")
def test_cz_with_arg_but_without_command(mocker):
testargs = ["cz", "--name", "cz_jira"]
mocker.patch.object(sys, "argv", testargs)
with pytest.raises(NoCommandFoundError) as excinfo:
cli.main()
assert "Command is required" in str(excinfo.value)
def test_name(mocker, capsys):
testargs = ["cz", "-n", "cz_jira", "example"]
mocker.patch.object(sys, "argv", testargs)
cli.main()
out, _ = capsys.readouterr()
assert out.startswith("JRA")
@pytest.mark.usefixtures("tmp_git_project")
def test_name_default_value(mocker, capsys):
testargs = ["cz", "example"]
mocker.patch.object(sys, "argv", testargs)
cli.main()
out, _ = capsys.readouterr()
assert out.startswith("fix: correct minor typos in code")
def test_ls(mocker, capsys):
testargs = ["cz", "-n", "cz_jira", "ls"]
mocker.patch.object(sys, "argv", testargs)
cli.main()
out, err = capsys.readouterr()
assert "cz_conventional_commits" in out
assert isinstance(out, str)
def test_arg_debug(mocker):
testargs = ["cz", "--debug", "info"]
mocker.patch.object(sys, "argv", testargs)
cli.main()
assert sys.excepthook.keywords.get("debug") is True
def test_commitizen_excepthook(capsys):
with pytest.raises(SystemExit) as excinfo:
cli.commitizen_excepthook(NotAGitProjectError, NotAGitProjectError(), "")
assert excinfo.type == SystemExit
assert excinfo.value.code == NotAGitProjectError.exit_code
def test_commitizen_debug_excepthook(capsys):
with pytest.raises(SystemExit) as excinfo:
cli.commitizen_excepthook(
NotAGitProjectError, NotAGitProjectError(), "", debug=True,
)
assert excinfo.type == SystemExit
assert excinfo.value.code == NotAGitProjectError.exit_code
assert "NotAGitProjectError" in str(excinfo.traceback[0])
def test_argcomplete_activation():
"""
This function is testing the one-time activation of argcomplete for
commitizen only.
Equivalent to run:
$ eval "$(register-python-argcomplete pytest)"
"""
output = subprocess.run(["register-python-argcomplete", "cz"])
assert output.returncode == 0