using ClaudeDo.Worker.Lifecycle; using Xunit; namespace ClaudeDo.Worker.Tests.Lifecycle; public sealed class WorkerStartupFailureTests { [Fact] public void FormatBindFailureMessage_IncludesBothPorts_WhenExternalMcpEnabled() { var message = WorkerStartupFailure.FormatBindFailureMessage( new IOException("Failed to bind to address http://127.0.0.1:47821: address already in use."), signalRPort: 47821, externalMcpPort: 47822); Assert.Contains("47821", message); Assert.Contains("47822", message); Assert.Contains("address already in use", message); } [Fact] public void FormatBindFailureMessage_OmitsExternalPort_WhenDisabled() { var message = WorkerStartupFailure.FormatBindFailureMessage( new IOException("boom"), signalRPort: 47821, externalMcpPort: 0); Assert.Contains("47821", message); Assert.DoesNotContain("0", message); } [Fact] public void ExitCode_IsNonZero() { Assert.NotEqual(0, WorkerStartupFailure.ExitCode); } }