GRM-136: refactor: rename PyPI package from gitea-runner-manager to grm
Post-merge / detect-type (push) Successful in 53s
Post-merge / release (push) Successful in 1m14s
Post-merge / validate-commit-msg (push) Successful in 1m25s
Post-merge / vikunja (push) Successful in 1m21s
Post-merge / badges (push) Successful in 1m45s
Post-merge / configure-repo (push) Successful in 1m15s
Post-merge / sync-wiki (push) Successful in 3m5s
Post-merge / publish (push) Successful in 1m1s

This commit was merged in pull request #203.
This commit is contained in:
2026-07-06 06:06:13 +00:00
parent d3dbb17cc2
commit 34742bab40
43 changed files with 178 additions and 178 deletions
+82 -82
View File
@@ -6,8 +6,8 @@ from unittest.mock import MagicMock, patch
import pytest
from click.testing import CliRunner
from gitea_runner_manager import __version__
from gitea_runner_manager.cli import cli
from grm import __version__
from grm.cli import cli
_TEST_ENV = {"GITEA_URL": "https://git.example.com", "CI_GITEA_TOKEN": ""}
@@ -27,7 +27,7 @@ class TestCLI:
assert result.exit_code == 0
assert __version__ in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -50,7 +50,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.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
@@ -73,10 +73,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_missing_url(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.install.side_effect = AnsibleError("GITEA_URL must be set (or pass --url)")
mock_manager_class.return_value = mock_manager
@@ -87,7 +87,7 @@ class TestCLI:
assert result.exit_code != 0
assert "GITEA_URL must be set" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_with_url_flag(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -114,10 +114,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_missing_token(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.install.side_effect = AnsibleError("GITEA_REGISTRATION_TOKEN must be set (or pass --token)")
mock_manager_class.return_value = mock_manager
@@ -128,7 +128,7 @@ class TestCLI:
assert result.exit_code != 0
assert "GITEA_REGISTRATION_TOKEN must be set" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_with_options(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -165,7 +165,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_ask_become_pass(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -188,10 +188,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.install.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -201,7 +201,7 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_with_labels(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -226,7 +226,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_with_empty_labels(self, mock_manager_class: MagicMock) -> None:
"""Explicit empty string labels means 'no labels' (not 'use default')."""
mock_manager = MagicMock()
@@ -250,7 +250,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_labels_from_env(self, mock_manager_class: MagicMock) -> None:
"""Labels read from GITEA_RUNNER_LABELS env var when --labels not passed."""
mock_manager = MagicMock()
@@ -274,7 +274,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_with_become_password_file(self, mock_manager_class: MagicMock) -> None:
"""--become-password-file passes file path to manager."""
import tempfile
@@ -311,7 +311,7 @@ class TestCLI:
os.unlink(pw_file)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_install_verbose(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -334,7 +334,7 @@ class TestCLI:
verbose=True,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_update(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -364,7 +364,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_update_ask_become_pass(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -382,10 +382,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_update_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.update.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -395,7 +395,7 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_start(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -413,7 +413,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_start_with_override(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -431,7 +431,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_stop(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -449,7 +449,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_restart(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -467,7 +467,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_enable(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -485,7 +485,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_disable(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -505,10 +505,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_disable_missing_url(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.disable.side_effect = AnsibleError("GITEA_URL must be set (or pass --url)")
mock_manager_class.return_value = mock_manager
@@ -519,7 +519,7 @@ class TestCLI:
assert result.exit_code != 0
assert "GITEA_URL must be set" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_disable_with_url_flag(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -540,10 +540,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_disable_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.disable.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -553,7 +553,7 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_status(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -571,7 +571,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_remove(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -592,7 +592,7 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_remove_force_flag(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -613,10 +613,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_start_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.start.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -626,10 +626,10 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_stop_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.stop.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -639,10 +639,10 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_enable_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.enable.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -652,10 +652,10 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_status_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.status.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -665,10 +665,10 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_remove_missing_url(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.remove.side_effect = AnsibleError("GITEA_URL must be set (or pass --url)")
mock_manager_class.return_value = mock_manager
@@ -679,7 +679,7 @@ class TestCLI:
assert result.exit_code != 0
assert "GITEA_URL must be set" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_remove_with_url_flag(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager_class.return_value = mock_manager
@@ -701,10 +701,10 @@ class TestCLI:
verbose=False,
)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_remove_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.remove.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -714,7 +714,7 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.list_runners.return_value = [
@@ -736,7 +736,7 @@ class TestCLI:
assert "active" in result.output
mock_manager.list_runners.assert_called_once_with(become_pass=None, no_status=False)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_no_status(self, mock_manager_class: MagicMock) -> None:
"""--no-status skips SSH checks and shows registry only."""
mock_manager = MagicMock()
@@ -758,22 +758,22 @@ class TestCLI:
assert "n/a" in result.output
mock_manager.list_runners.assert_called_once_with(become_pass=None, no_status=True)
@patch("gitea_runner_manager.cli.click.prompt", return_value="secret")
@patch("gitea_runner_manager.cli.sys.stdin")
@patch("grm.cli.click.prompt", return_value="secret")
@patch("grm.cli.sys.stdin")
def test_collect_become_pass_tty(self, mock_stdin: MagicMock, mock_prompt: MagicMock) -> None:
from gitea_runner_manager.cli import _collect_become_pass
from grm.cli import _collect_become_pass
mock_stdin.isatty.return_value = True
assert _collect_become_pass(ask_become_pass=True) == "secret"
@patch("gitea_runner_manager.cli.sys.stdin")
@patch("grm.cli.sys.stdin")
def test_collect_become_pass_no_ask(self, mock_stdin: MagicMock) -> None:
from gitea_runner_manager.cli import _collect_become_pass
from grm.cli import _collect_become_pass
mock_stdin.isatty.return_value = True
assert _collect_become_pass(ask_become_pass=False) is None
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_with_piped_become_pass(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.list_runners.return_value = []
@@ -784,7 +784,7 @@ class TestCLI:
assert result.exit_code == 0
mock_manager.list_runners.assert_called_once_with(become_pass="secret", no_status=False)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_with_become_password_file(self, mock_manager_class: MagicMock) -> None:
"""--become-password-file reads password from file for grm list."""
import os
@@ -806,7 +806,7 @@ class TestCLI:
finally:
os.unlink(pw_file)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_with_become_password_file_env(self, mock_manager_class: MagicMock) -> None:
"""GRM_BECOME_PASSWORD_FILE env var works for grm list."""
import os
@@ -828,7 +828,7 @@ class TestCLI:
finally:
os.unlink(pw_file)
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_empty(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.list_runners.return_value = []
@@ -839,10 +839,10 @@ class TestCLI:
assert result.exit_code == 0
assert "No runners registered" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_list_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.list_runners.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -852,7 +852,7 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_health_all_healthy(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.health.return_value = [
@@ -868,7 +868,7 @@ class TestCLI:
assert "r2" in result.output
assert "yes" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_health_with_unhealthy(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.health.return_value = [
@@ -883,7 +883,7 @@ class TestCLI:
assert "unhealthy" in result.output.lower()
assert "r2" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_health_single_runner(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.health.return_value = [
@@ -897,7 +897,7 @@ class TestCLI:
assert "r1" in result.output
mock_manager.health.assert_called_once()
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_health_empty(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
mock_manager.health.return_value = []
@@ -908,10 +908,10 @@ class TestCLI:
assert result.exit_code == 0
assert "No runners registered" in result.output
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_health_error(self, mock_manager_class: MagicMock) -> None:
mock_manager = MagicMock()
from gitea_runner_manager.exceptions import AnsibleError
from grm.exceptions import AnsibleError
mock_manager.health.side_effect = AnsibleError("fail")
mock_manager_class.return_value = mock_manager
@@ -921,8 +921,8 @@ class TestCLI:
assert result.exit_code != 0
assert "fail" in result.output
@patch("gitea_runner_manager.cli.os.getlogin", side_effect=OSError("no tty"))
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.os.getlogin", side_effect=OSError("no tty"))
@patch("grm.cli.RunnerManager")
def test_default_user_fallback_on_getlogin_error(
self, mock_manager_class: MagicMock, mock_getlogin: MagicMock
) -> None:
@@ -937,8 +937,8 @@ class TestCLI:
call_kwargs = mock_manager.install.call_args.kwargs
assert call_kwargs["user"] == "testuser"
@patch("gitea_runner_manager.cli.os.getlogin", side_effect=OSError("no tty"))
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.os.getlogin", side_effect=OSError("no tty"))
@patch("grm.cli.RunnerManager")
def test_default_user_fallback_to_root(self, mock_manager_class: MagicMock, mock_getlogin: MagicMock) -> None:
"""os.getlogin() failure with no USER env falls back to 'root'."""
mock_manager = MagicMock()
@@ -951,7 +951,7 @@ class TestCLI:
call_kwargs = mock_manager.install.call_args.kwargs
assert call_kwargs["user"] == "root"
@patch("gitea_runner_manager.cli.RunnerManager")
@patch("grm.cli.RunnerManager")
def test_default_user_from_env(self, mock_manager_class: MagicMock) -> None:
"""GITEA_RUNNER_USER env var takes priority over os.getlogin()."""
mock_manager = MagicMock()
@@ -970,20 +970,20 @@ class TestCLI:
def test_get_verbose_no_context(self) -> None:
"""_get_verbose returns False when called outside Click context."""
from gitea_runner_manager.cli import _get_verbose
from grm.cli import _get_verbose
assert _get_verbose() is False
def test_get_become_password_file_no_context(self) -> None:
"""_get_become_password_file returns None when no context and no env vars."""
from gitea_runner_manager.cli import _get_become_password_file
from grm.cli import _get_become_password_file
with patch.dict("os.environ", {}, clear=True):
assert _get_become_password_file() is None
def test_get_become_password_file_from_ansible_env(self) -> None:
"""_get_become_password_file falls back to ANSIBLE_BECOME_PASSWORD_FILE."""
from gitea_runner_manager.cli import _get_become_password_file
from grm.cli import _get_become_password_file
with patch.dict("os.environ", {"ANSIBLE_BECOME_PASSWORD_FILE": "/tmp/ansible.txt"}, clear=True):
assert _get_become_password_file() == "/tmp/ansible.txt"
@@ -994,7 +994,7 @@ class TestTriggerWorkflow:
def test_trigger_workflow_success(self) -> None:
runner = CliRunner(env=_TEST_ENV)
with patch("gitea_runner_manager.cli.GiteaWorkflowClient") as mock_client_cls:
with patch("grm.cli.GiteaWorkflowClient") as mock_client_cls:
mock_client = MagicMock()
mock_client_cls.return_value = mock_client
mock_client.dispatch_workflow.return_value = {
@@ -1022,7 +1022,7 @@ class TestTriggerWorkflow:
def test_trigger_workflow_list(self) -> None:
runner = CliRunner(env=_TEST_ENV)
with patch("gitea_runner_manager.cli.GiteaWorkflowClient") as mock_client_cls:
with patch("grm.cli.GiteaWorkflowClient") as mock_client_cls:
mock_client = MagicMock()
mock_client_cls.return_value = mock_client
mock_client.list_workflows.return_value = [
@@ -1037,7 +1037,7 @@ class TestTriggerWorkflow:
def test_trigger_workflow_list_empty(self) -> None:
runner = CliRunner(env=_TEST_ENV)
with patch("gitea_runner_manager.cli.GiteaWorkflowClient") as mock_client_cls:
with patch("grm.cli.GiteaWorkflowClient") as mock_client_cls:
mock_client = MagicMock()
mock_client_cls.return_value = mock_client
mock_client.list_workflows.return_value = []
@@ -1052,10 +1052,10 @@ class TestTriggerWorkflow:
assert "WORKFLOW_ID" in result.output
def test_trigger_workflow_api_error(self) -> None:
from gitea_runner_manager.gitea_client import GiteaAPIError
from grm.gitea_client import GiteaAPIError
runner = CliRunner(env=_TEST_ENV)
with patch("gitea_runner_manager.cli.GiteaWorkflowClient") as mock_client_cls:
with patch("grm.cli.GiteaWorkflowClient") as mock_client_cls:
mock_client = MagicMock()
mock_client_cls.return_value = mock_client
mock_client.dispatch_workflow.side_effect = GiteaAPIError(404, "workflow not found")
@@ -1065,7 +1065,7 @@ class TestTriggerWorkflow:
def test_trigger_workflow_custom_repo_and_ref(self) -> None:
runner = CliRunner(env=_TEST_ENV)
with patch("gitea_runner_manager.cli.GiteaWorkflowClient") as mock_client_cls:
with patch("grm.cli.GiteaWorkflowClient") as mock_client_cls:
mock_client = MagicMock()
mock_client_cls.return_value = mock_client
mock_client.dispatch_workflow.return_value = None