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 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.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()))