GRM-19: refactor: resolve_runner returns gitea_url, add --url CLI option, force remove improvements, code quality fixes
- _resolve_runner now returns gitea_url from registry so disable/remove can reuse the URL stored at install time without requiring env vars. - Added --url option to install, disable, and remove CLI commands. - remove(force=True) no longer requires gitea_url or token. - Moved _parse_status outside the for loop in list_runners. - Updated all translations and tests to match.
This commit is contained in:
+68
-2
@@ -70,6 +70,31 @@ class TestCLI:
|
||||
assert result.exit_code != 0
|
||||
assert "GITEA_URL must be set" in result.output
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_install_with_url_flag(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
mock_manager_class.return_value = mock_manager
|
||||
|
||||
with patch.dict("os.environ", {"GITEA_REGISTRATION_TOKEN": "tok"}, clear=True):
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(
|
||||
cli,
|
||||
["install", "host1", "--user", "ubuntu", "--token", "tok", "--url", "https://git.example.com"],
|
||||
)
|
||||
assert result.exit_code == 0
|
||||
mock_manager.install.assert_called_once_with(
|
||||
host="host1",
|
||||
user="ubuntu",
|
||||
key=None,
|
||||
name=None,
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
mode="docker",
|
||||
admin_token=None,
|
||||
integration_retries=3,
|
||||
ask_become_pass=True,
|
||||
)
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_install_missing_token(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
@@ -349,6 +374,26 @@ class TestCLI:
|
||||
assert result.exit_code != 0
|
||||
assert "GITEA_URL must be set" in result.output
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_disable_with_url_flag(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
mock_manager_class.return_value = mock_manager
|
||||
|
||||
with patch.dict("os.environ", {"GITEA_REGISTRATION_TOKEN": "tok"}, clear=True):
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["disable", "r1", "--token", "tok", "--url", "https://git.example.com"])
|
||||
assert result.exit_code == 0
|
||||
mock_manager.disable.assert_called_once_with(
|
||||
name="r1",
|
||||
host=None,
|
||||
user=None,
|
||||
key=None,
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
mode=None,
|
||||
ask_become_pass=True,
|
||||
)
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_disable_error(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
@@ -395,8 +440,8 @@ class TestCLI:
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
mode=None,
|
||||
ask_become_pass=True,
|
||||
force=False,
|
||||
ask_become_pass=True,
|
||||
)
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
@@ -415,8 +460,8 @@ class TestCLI:
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
mode=None,
|
||||
ask_become_pass=True,
|
||||
force=True,
|
||||
ask_become_pass=True,
|
||||
)
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
@@ -485,6 +530,27 @@ class TestCLI:
|
||||
assert result.exit_code != 0
|
||||
assert "GITEA_URL must be set" in result.output
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_remove_with_url_flag(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
mock_manager_class.return_value = mock_manager
|
||||
|
||||
with patch.dict("os.environ", {"GITEA_REGISTRATION_TOKEN": "tok"}, clear=True):
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["remove", "r1", "--token", "tok", "--url", "https://git.example.com"])
|
||||
assert result.exit_code == 0
|
||||
mock_manager.remove.assert_called_once_with(
|
||||
name="r1",
|
||||
host=None,
|
||||
user=None,
|
||||
key=None,
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
mode=None,
|
||||
force=False,
|
||||
ask_become_pass=True,
|
||||
)
|
||||
|
||||
@patch("gitea_runner_manager.cli.RunnerManager")
|
||||
def test_remove_error(self, mock_manager_class: MagicMock) -> None:
|
||||
mock_manager = MagicMock()
|
||||
|
||||
Reference in New Issue
Block a user