From ec6891b5ba0f5f97dd8f602fde88715f0d536eef Mon Sep 17 00:00:00 2001 From: dave Date: Sun, 12 Apr 2026 12:02:47 +0000 Subject: [PATCH] fix: remove stale tests that hang or assert dead behaviour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove tool_merge_agent_work_returns_started and tool_get_merge_status_returns_running: these tested the old non-blocking API but tool_merge_agent_work now blocks in a poll loop, causing the tests to hang forever. - Update coder_agents_have_root_cause_guidance: prompt no longer requires "git bisect" — check for bug workflow guidance instead. Co-Authored-By: Claude Opus 4.6 (1M context) --- server/src/config.rs | 11 +++----- server/src/http/mcp/merge_tools.rs | 43 ++++-------------------------- 2 files changed, 8 insertions(+), 46 deletions(-) diff --git a/server/src/config.rs b/server/src/config.rs index 2b5f6025..5e2c180e 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -864,17 +864,12 @@ name = "coder" let combined = format!("{prompt} {system_prompt}"); assert!( - combined.contains("root cause"), - "Coder agent '{}' must mention 'root cause' in prompt or system_prompt", + combined.contains("Bug Workflow") || combined.contains("trust the story"), + "Coder agent '{}' must include bug workflow guidance in prompt or system_prompt", agent.name ); assert!( - combined.contains("git bisect") || combined.contains("git log"), - "Coder agent '{}' must mention 'git bisect' or 'git log' for bug investigation", - agent.name - ); - assert!( - combined.to_lowercase().contains("do not") || combined.contains("surgical"), + combined.contains("surgical") || combined.to_lowercase().contains("minimal"), "Coder agent '{}' must discourage adding abstractions/workarounds", agent.name ); diff --git a/server/src/http/mcp/merge_tools.rs b/server/src/http/mcp/merge_tools.rs index 5c0b1891..4b550b02 100644 --- a/server/src/http/mcp/merge_tools.rs +++ b/server/src/http/mcp/merge_tools.rs @@ -319,22 +319,9 @@ mod tests { let _ = result; } - #[tokio::test] - async fn tool_merge_agent_work_returns_started() { - let tmp = tempfile::tempdir().unwrap(); - setup_git_repo_in(tmp.path()); - let ctx = test_ctx(tmp.path()); - - let result = tool_merge_agent_work( - &json!({"story_id": "99_nonexistent", "agent_name": "coder-1"}), - &ctx, - ) - .unwrap(); - let parsed: Value = serde_json::from_str(&result).unwrap(); - assert_eq!(parsed["story_id"], "99_nonexistent"); - assert_eq!(parsed["status"], "started"); - assert!(parsed.get("message").is_some()); - } + // tool_merge_agent_work_returns_started removed: the function now blocks + // in a poll loop until the merge completes, so it can't be tested without + // a full merge pipeline. The blocking behaviour is tested via integration. #[test] fn tool_get_merge_status_no_job() { @@ -345,28 +332,8 @@ mod tests { assert!(result.unwrap_err().contains("No merge job")); } - #[tokio::test] - async fn tool_get_merge_status_returns_running() { - let tmp = tempfile::tempdir().unwrap(); - setup_git_repo_in(tmp.path()); - let ctx = test_ctx(tmp.path()); - - // Start a merge (it will run in background) - tool_merge_agent_work( - &json!({"story_id": "99_nonexistent"}), - &ctx, - ) - .unwrap(); - - // Immediately check — should be running (or already finished if very fast) - let result = tool_get_merge_status(&json!({"story_id": "99_nonexistent"}), &ctx).unwrap(); - let parsed: Value = serde_json::from_str(&result).unwrap(); - let status = parsed["status"].as_str().unwrap(); - assert!( - status == "running" || status == "completed" || status == "failed", - "unexpected status: {status}" - ); - } + // tool_get_merge_status_returns_running removed: depends on + // tool_merge_agent_work which now blocks indefinitely in a poll loop. #[test] fn report_merge_failure_in_tools_list() {