GRM-30: feat: add runner labels support and refactor i18n to JSON
This commit is contained in:
@@ -42,6 +42,7 @@ class TestRunnerManager:
|
||||
key=None,
|
||||
mode="docker",
|
||||
gitea_url="https://git.example.com",
|
||||
labels=None,
|
||||
)
|
||||
|
||||
def test_install_with_name_and_key(self) -> None:
|
||||
@@ -68,6 +69,7 @@ class TestRunnerManager:
|
||||
key="/key",
|
||||
mode="docker",
|
||||
gitea_url="https://git.example.com",
|
||||
labels=None,
|
||||
)
|
||||
|
||||
def test_install_ask_become_pass(self) -> None:
|
||||
@@ -93,7 +95,13 @@ class TestRunnerManager:
|
||||
cmd_str = " ".join(cmd)
|
||||
assert "runner_mode=binary" in cmd_str
|
||||
mock_registry.add.assert_called_once_with(
|
||||
name="host1", host="host1", user="root", key=None, mode="binary", gitea_url="https://git.example.com"
|
||||
name="host1",
|
||||
host="host1",
|
||||
user="root",
|
||||
key=None,
|
||||
mode="binary",
|
||||
gitea_url="https://git.example.com",
|
||||
labels=None,
|
||||
)
|
||||
|
||||
def test_install_missing_gitea_url(self) -> None:
|
||||
@@ -112,6 +120,34 @@ class TestRunnerManager:
|
||||
with pytest.raises(AnsibleError, match="Playbook not found"):
|
||||
manager.install("host", "user", token="tok", gitea_url="https://git.example.com")
|
||||
|
||||
def test_install_with_labels(self) -> None:
|
||||
mock_registry = MagicMock()
|
||||
manager = RunnerManager(registry=mock_registry)
|
||||
mock_executor = MagicMock()
|
||||
manager._executor = mock_executor
|
||||
|
||||
manager.install(
|
||||
"host1",
|
||||
"root",
|
||||
token="tok",
|
||||
gitea_url="https://git.example.com",
|
||||
labels="docker:docker://alpine:latest",
|
||||
)
|
||||
cmd = mock_executor.run.call_args.args[0]
|
||||
cmd_str = " ".join(cmd)
|
||||
assert "runner_labels=docker:docker://alpine:latest" in cmd_str
|
||||
|
||||
def test_install_no_labels(self) -> None:
|
||||
mock_registry = MagicMock()
|
||||
manager = RunnerManager(registry=mock_registry)
|
||||
mock_executor = MagicMock()
|
||||
manager._executor = mock_executor
|
||||
|
||||
manager.install("host1", "root", token="tok", gitea_url="https://git.example.com")
|
||||
cmd = mock_executor.run.call_args.args[0]
|
||||
cmd_str = " ".join(cmd)
|
||||
assert "runner_labels" not in cmd_str
|
||||
|
||||
def test_install_with_admin_token(self) -> None:
|
||||
mock_registry = MagicMock()
|
||||
manager = RunnerManager(registry=mock_registry)
|
||||
@@ -530,6 +566,19 @@ class TestRunnerManager:
|
||||
manager = RunnerManager(registry=mock_registry)
|
||||
assert manager.list_runners() == []
|
||||
|
||||
def test_list_runners_without_labels(self) -> None:
|
||||
mock_registry = MagicMock()
|
||||
mock_registry.list.return_value = {
|
||||
"r1": {"host": "10.0.0.1", "user": "ubuntu", "key": None, "mode": "docker"},
|
||||
}
|
||||
manager = RunnerManager(registry=mock_registry)
|
||||
mock_executor = MagicMock()
|
||||
mock_executor.run_ad_hoc.return_value = "running"
|
||||
manager._executor = mock_executor
|
||||
|
||||
runners = manager.list_runners()
|
||||
assert runners[0]["labels"] == ""
|
||||
|
||||
def test_list_runners_docker_exited(self) -> None:
|
||||
mock_registry = MagicMock()
|
||||
mock_registry.list.return_value = {
|
||||
|
||||
Reference in New Issue
Block a user