GRM-18: feat: make --ask-become-pass the default behavior

- Change --ask-become-pass from opt-in to opt-out across all commands
  (install, update, start, stop, enable, disable, status, remove)
- Use Click toggle pattern: --ask-become-pass/--no-ask-become-pass with
  default=True so users are always prompted for sudo unless they
  explicitly opt out
- Update i18n translations for both help texts
- Update all CLI tests to expect ask_become_pass=True as default and
  add test for --no-ask-become-pass
- Update README: remove --ask-become-pass from examples, document
  --no-ask-become-pass for passwordless-sudo setups
- 120 tests, 100% coverage, pyright clean, ruff clean
This commit is contained in:
Emil Simeonov
2026-06-19 02:11:38 +02:00
parent 18760f6a2a
commit ebb1088a8c
4 changed files with 71 additions and 31 deletions
+33 -12
View File
@@ -22,6 +22,27 @@ class TestCLI:
runner = CliRunner(env={"GITEA_URL": "https://git.example.com", "GITEA_ADMIN_TOKEN": ""})
result = runner.invoke(cli, ["install", "host1", "--user", "ubuntu", "--token", "tok"])
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="",
integration_retries=3,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
def test_install_no_ask_become_pass(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
runner = CliRunner(env={"GITEA_URL": "https://git.example.com", "GITEA_ADMIN_TOKEN": ""})
result = runner.invoke(cli, ["install", "host1", "--user", "ubuntu", "--token", "tok", "--no-ask-become-pass"])
assert result.exit_code == 0
mock_manager.install.assert_called_once_with(
host="host1",
user="ubuntu",
@@ -95,7 +116,7 @@ class TestCLI:
mode="docker",
admin_token="",
integration_retries=3,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -137,7 +158,7 @@ class TestCLI:
mode="binary",
admin_token="",
integration_retries=3,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -179,7 +200,7 @@ class TestCLI:
key="/key",
version="v0.2.0",
mode="docker",
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -213,7 +234,7 @@ class TestCLI:
key=None,
version=None,
mode="binary",
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -243,7 +264,7 @@ class TestCLI:
user=None,
key=None,
mode=None,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -260,7 +281,7 @@ class TestCLI:
user="newuser",
key=None,
mode="binary",
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -276,7 +297,7 @@ class TestCLI:
host=None,
user=None,
key=None,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -292,7 +313,7 @@ class TestCLI:
host=None,
user=None,
key=None,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -311,7 +332,7 @@ class TestCLI:
token="tok",
gitea_url="https://git.example.com",
mode=None,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -355,7 +376,7 @@ class TestCLI:
user=None,
key=None,
mode=None,
ask_become_pass=False,
ask_become_pass=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@@ -374,7 +395,7 @@ class TestCLI:
token="tok",
gitea_url="https://git.example.com",
mode=None,
ask_become_pass=False,
ask_become_pass=True,
force=False,
)
@@ -394,7 +415,7 @@ class TestCLI:
token="tok",
gitea_url="https://git.example.com",
mode=None,
ask_become_pass=False,
ask_become_pass=True,
force=True,
)