Skip to content

Commit ad11657

Browse files
committed
Add tests for commodore tool command group
1 parent b72bd56 commit ad11657

9 files changed

Lines changed: 3080 additions & 0 deletions

tests/test_cli.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,18 @@ def test_package_sync_command():
107107
def test_version_command():
108108
exit_status = call("commodore version --help", shell=True)
109109
assert exit_status == 0
110+
111+
112+
def test_tool_list_command():
113+
exit_status = call("commodore tool list --help", shell=True)
114+
assert exit_status == 0
115+
116+
117+
def test_tool_install_command():
118+
exit_status = call("commodore tool install --help", shell=True)
119+
assert exit_status == 0
120+
121+
122+
def test_tool_upgrade_command():
123+
exit_status = call("commodore tool upgrade --help", shell=True)
124+
assert exit_status == 0

tests/test_cli_tool.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
from unittest.mock import patch
2+
from typing import Optional
3+
4+
import pytest
5+
6+
from conftest import RunnerFunc
7+
8+
from commodore.config import Config
9+
10+
11+
@patch("commodore.tools.list_tools")
12+
@patch("commodore.tools.load_state")
13+
@pytest.mark.parametrize(
14+
"args,vcheck",
15+
[
16+
([], True),
17+
(["--version-check"], True),
18+
(["--skip-version-check"], False),
19+
(["-V"], False),
20+
],
21+
)
22+
def test_tool_list(
23+
mock_load_state,
24+
mock_list_tools,
25+
cli_runner: RunnerFunc,
26+
args: list[str],
27+
vcheck: bool,
28+
):
29+
def mock_list(_config: Config, version_check: bool):
30+
assert version_check == vcheck
31+
32+
mock_list_tools.side_effect = mock_list
33+
34+
result = cli_runner(["tool", "list"] + args)
35+
assert result.exit_code == 0
36+
mock_load_state.assert_called_once()
37+
38+
39+
@patch("commodore.tools.install_tool")
40+
@patch("commodore.tools.load_state")
41+
@pytest.mark.parametrize(
42+
"tool,args,expected_version",
43+
[
44+
("jb", [], None),
45+
("jb", ["--version", "v0.6.3"], "v0.6.3"),
46+
],
47+
)
48+
def test_tool_install(
49+
mock_load_state,
50+
mock_install_tool,
51+
cli_runner: RunnerFunc,
52+
tool: str,
53+
args: list[str],
54+
expected_version,
55+
):
56+
def mock_install(_config: Config, mtool: str, mversion: Optional[str]):
57+
assert mtool == tool
58+
assert mversion == expected_version
59+
60+
mock_install_tool.side_effect = mock_install
61+
62+
result = cli_runner(["tool", "install", tool] + args)
63+
assert result.exit_code == 0
64+
mock_load_state.assert_called_once()
65+
66+
67+
@patch("commodore.tools.upgrade_tool")
68+
@patch("commodore.tools.load_state")
69+
@pytest.mark.parametrize(
70+
"tool,args,expected_version",
71+
[
72+
("jb", [], None),
73+
("jb", ["--version", "v0.6.3"], "v0.6.3"),
74+
],
75+
)
76+
def test_tool_upgrade(
77+
mock_load_state,
78+
mock_upgrade_tool,
79+
cli_runner: RunnerFunc,
80+
tool: str,
81+
args: list[str],
82+
expected_version,
83+
):
84+
def mock_upgrade(_config: Config, mtool: str, mversion: Optional[str]):
85+
assert mtool == tool
86+
assert mversion == expected_version
87+
88+
mock_upgrade_tool.side_effect = mock_upgrade
89+
90+
result = cli_runner(["tool", "upgrade", tool] + args)
91+
assert result.exit_code == 0
92+
mock_load_state.assert_called_once()

0 commit comments

Comments
 (0)