Files
ClaudeDo/tests/ClaudeDo.Worker.Tests/External/_finalize_remainder.py
T
Mika Kuns 7a0b97df59 refactor(claude-do): refactor(worker): move the merge and worktree MCP tools out
`src/ClaudeDo.Worker/External/ExternalMcpService.cs` ist **1897 Zeilen** (nachgezählt 2026-09-02; die Datei ist seit dem Anlegen dieses Tasks von 1696 weiter gewachsen): ~30 DTO-Records oben plus ~25 Tool-Methoden — während **13** Geschwisterdateien `*McpTools.cs` im selben Ordner das Topic-Split-Muster schon tragen (`ListMcpTools`, `ConfigMcpTools`, `BatchMcpTools`, `NotesMcpTools`, `QueueStateMc

ClaudeDo-Task: 1862e160-ffde-4a50-aa03-bb7251f56088
2026-09-02 13:02:10 +02:00

55 lines
2.1 KiB
Python

import re
path = r"C:\Private\.claudedo-worktrees\claude-do\1862e160-ffde-4a50-aa03-bb7251f56088\tests\ClaudeDo.Worker.Tests\External\_remainder.cs"
with open(path, encoding='utf-8') as f:
lines = f.readlines()
def idx(marker, start=0):
for i in range(start, len(lines)):
if marker in lines[i]:
return i
raise AssertionError(f"marker not found: {marker!r}")
# Each deletion described as (start_marker, end_marker_exclusive) -- delete from the line
# containing start_marker up to (but not including) the line containing end_marker.
deletions = [
("// ── GetTaskWorktree ──", "// ── GetTaskConfig ──"),
("// ── MergeTask allowWaitingForReview ──", "// ── leaveConflictsInTree ──"),
("// Three edits spread far enough apart", "[Fact]"), # multi-hunk helpers, up to next [Fact]
("// ── continue_merge / abort_merge ──", "// ── PreviewMerge / PreviewMergeSet ──"),
("private async Task<string> CreateActiveWorktreeAsync(", "[Fact]"),
]
# Apply deletions from bottom to top so earlier indices stay valid.
spans = []
for start_marker, end_marker in deletions:
s = idx(start_marker)
e = idx(end_marker, s + 1)
spans.append((s, e))
spans.sort(reverse=True)
for s, e in spans:
del lines[s:e]
text = ''.join(lines)
# Drop the now-unused `maintenance` local + ctor arg in BuildSut(QueueService, IVerifyCommandRunner).
before = text
text = text.replace(
" var maintenance = new WorktreeMaintenanceService(factory, git, NullLogger<WorktreeMaintenanceService>.Instance);\n",
"", 1)
assert text != before, "maintenance local not removed"
before = text
text = text.replace(
" git, factory, maintenance, merge, planningMerge,\n",
" git, factory, merge, planningMerge,\n", 1)
assert text != before, "maintenance ctor arg not removed"
# Collapse any remaining runs of 2+ blank lines down to a single blank line (cosmetic only).
text = re.sub(r'\n{3,}', '\n\n', text)
with open(path, 'w', encoding='utf-8') as f:
f.write(text)
print("final line count:", len(text.splitlines()))