Host startup failure names the escaped exception type; test cleanup warns when it cannot delete

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Aqua 2026-11-07 11:48:52 +00:00
commit 9ce4eb8d06
2 changed files with 4 additions and 2 deletions

View file

@ -28,7 +28,7 @@ public static class AquariumHost
catch (Exception error)
{
// Startup refusals carry raw, attacker-writable paths; the console gets them escaped, once, here.
Console.Error.WriteLine($"Client runtime failed to start. {ClientRuntimeLoader.Printable(error.Message)}");
Console.Error.WriteLine($"Client runtime failed to start ({ClientRuntimeLoader.Printable(error.GetType().FullName ?? error.GetType().Name)}). {ClientRuntimeLoader.Printable(error.Message)}");
loader?.Dispose();
return 1;
}

View file

@ -77,6 +77,8 @@ public sealed class ClientRuntimeLoaderTrustTests : IDisposable
Thread.Sleep(100);
}
}
Console.Error.WriteLine($"Warning: test cleanup could not delete (locked loaded assembly?): {ClientRuntimeLoader.Printable(work)}");
}
// A real client assembly: the minimal sample, copied so its location is ours to choose.
@ -389,7 +391,7 @@ public sealed class ClientRuntimeLoaderTrustTests : IDisposable
var errors = CaptureError(() => exit = AquariumHost.Run(["--headless", "--client-trusted-root", volumeRoot]));
Assert.Equal(1, exit);
Assert.Contains("Client runtime failed to start.", errors);
Assert.Contains("Client runtime failed to start (System.ArgumentException).", errors);
Assert.Contains("cannot be the client runtime trusted root", errors);
}