Repository navigation
ProtoTest 1.1.7
[1.1.7] - 2026-10-09
ProtoTest 1.1.7 fails a test whose cleanup fails, reports a missing xUnit collection fixture as a failed test instead of a green run, and makes releasing a test's resources and clients exact: a failed release is no longer hidden, disposal waits for a release in flight, and a client is disposed once.
Breaking changes
Core
- a test whose body passed but whose cleanup failed (a teardown hook, a resource release, a client's disposal) is reported as failed, with a message that says the body passed and names the first cleanup failure. A test whose body failed keeps that failure first, with the cleanup failures after it. Every cleanup step is still attempted and recorded as a Teardown finding.
ProtoTest:CleanupFailuresset toReport(orbuilder.ConfigureCleanup(...)) keeps the previous behaviour: findings only, the test passes and its trace reads Partial. Lifecycle
Fixes
Runners and analyzers
- xUnit v2: a missing collection fixture fails each ProtoTest test with a message that names
ProtoTestAssembly, and the rest of the run reports, where the runner crashed before anddotnet testcould end green with the test missing. xUnit v2
Core
- stopping the host while it starts waits for the start, then stops it and runs the after-run hooks once; a start that was stopped from outside throws instead of reporting success, and stopping the host from inside its own start throws instead of hanging. Lifecycle
ReleaseResourceAsyncthrows the release's own exception when the release fails, after recording it, where it returnedtruebefore; the test's cleanup outcome includes it. Execution context- disposing a test context waits for a release that is still running before it closes the test's services, and a second dispose waits for the first. A release callback that disposes its own context, or releases its own resource, throws instead of hanging. Execution context
- one client instance registered under several names or types is disposed once and traced as one client; registering the same instance under the same name again does nothing, and registering it with another ownership (
ContextandCaller) throws. Clients