using ClaudeDo.Worker.Runner.Interfaces; namespace ClaudeDo.Worker.Tests.Infrastructure; public sealed class FakeClaudeStreamTransport : IClaudeStreamTransport { public List Written { get; } = []; public bool Killed { get; private set; } public bool Started { get; private set; } public event Func? LineReceived; public event Func? StderrReceived; public Task StartAsync(IReadOnlyList args, string workingDirectory, CancellationToken ct) { Started = true; return Task.CompletedTask; } public Task WriteLineAsync(string jsonLine, CancellationToken ct) { Written.Add(jsonLine); return Task.CompletedTask; } public void Kill() => Killed = true; public Task WaitForExitAsync() => Task.CompletedTask; public ValueTask DisposeAsync() => ValueTask.CompletedTask; // Test helper: push a simulated stdout line to all LineReceived subscribers. public async Task PushLineAsync(string line) { var handler = LineReceived; if (handler is not null) await handler(line); } // Test helper: push a simulated stderr line. public async Task PushStderrAsync(string line) { var handler = StderrReceived; if (handler is not null) await handler(line); } }