GRM-59: fix: post-merge workflow failures (4 jobs)

This commit is contained in:
2026-06-22 10:26:28 +00:00
parent 7d3cf999d6
commit f649120172
7 changed files with 42 additions and 25 deletions
+3 -1
View File
@@ -46,7 +46,9 @@ class TestConfigConstants:
def test_branch_protection_config(self) -> None:
assert BRANCH_PROTECTION_CONFIG["branch_name"] == "master"
assert BRANCH_PROTECTION_CONFIG["enable_push"] is False
assert BRANCH_PROTECTION_CONFIG["enable_push"] is True
assert BRANCH_PROTECTION_CONFIG["enable_push_whitelist"] is True
assert "emil" in BRANCH_PROTECTION_CONFIG["push_whitelist_usernames"]
assert BRANCH_PROTECTION_CONFIG["required_approvals"] == 0
contexts = BRANCH_PROTECTION_CONFIG["status_check_contexts"]
assert isinstance(contexts, list)
+9
View File
@@ -62,6 +62,15 @@ class TestEnsureLabelViaTea:
assert result is True
mock_fallback.assert_called_once_with("ready-to-merge", "2ecc71", "desc")
def test_tea_not_installed_falls_back_to_client(self) -> None:
"""When tea CLI is not installed (FileNotFoundError), fall back to GiteaClient."""
mock_tea = MagicMock()
mock_tea.list_labels.side_effect = FileNotFoundError("[Errno 2] No such file or directory: 'tea'")
with patch("scripts.configure_repo._ensure_label_via_client", return_value=True) as mock_fallback:
result = _ensure_label_via_tea(mock_tea, "owner/repo", "ready-to-merge", "2ecc71", "desc")
assert result is True
mock_fallback.assert_called_once_with("ready-to-merge", "2ecc71", "desc")
class TestEnsureLabelViaClient:
@patch.dict("os.environ", {"REPO_TOKEN": "tok"}, clear=True)
+7 -9
View File
@@ -58,12 +58,10 @@ class TestResolveTaskId:
assert resolve_task_id(mock_client, "GRM-19") == 42
mock_client.list_project_tasks.assert_called_once()
def test_not_found_raises(self) -> None:
def test_not_found_returns_none(self) -> None:
mock_client = MagicMock()
mock_client.list_project_tasks.return_value = []
with pytest.raises(click.ClickException) as exc:
resolve_task_id(mock_client, "GRM-99")
assert "Could not find" in str(exc.value)
assert resolve_task_id(mock_client, "GRM-99") is None
def test_found_on_second_page(self) -> None:
"""Task is on page 2 when project has more than 50 tasks."""
@@ -79,9 +77,7 @@ class TestResolveTaskId:
mock_client = MagicMock()
page1 = [{"id": i, "identifier": f"GRM-{i}"} for i in range(10)]
mock_client.list_project_tasks.return_value = page1
with pytest.raises(click.ClickException) as exc:
resolve_task_id(mock_client, "GRM-99")
assert "Could not find" in str(exc.value)
assert resolve_task_id(mock_client, "GRM-99") is None
assert mock_client.list_project_tasks.call_count == 1
def test_http_error_propagates(self) -> None:
@@ -168,14 +164,16 @@ class TestMain:
@patch.dict("os.environ", {"VIKUNJA_TOKEN": "tok"})
@patch("scripts.ci.post_merge.VikunjaClient")
def test_resolve_failure_propagates(self, mock_client_cls: MagicMock) -> None:
def test_resolve_failure_warns(self, mock_client_cls: MagicMock) -> None:
"""Missing Vikunja task should warn, not fail — the merge already succeeded."""
mock_client = MagicMock()
mock_client.list_project_tasks.return_value = []
mock_client_cls.return_value = mock_client
runner = CliRunner()
result = runner.invoke(main, ["GRM-20: fix: bug"])
assert result.exit_code == 1
assert result.exit_code == 0
assert "Could not find" in result.output
assert "Warning" in result.output
@patch.dict("os.environ", {"VIKUNJA_TOKEN": "tok"})
@patch("scripts.ci.post_merge.VikunjaClient")