context — validation proof

Go’s own context test suite, converted to C# by go2cs, built against the converted standard library, run under the Go-semantics test host, and compared verdict for verdict against a clean go test -json baseline of the same sources. This page is generated by the converter from that comparison — it is the evidence behind the context row in Validated Test Packages.

Validated 2026-08-04 · converter f6e9c0cf0

57 matched · 1 disclosed — Go 1.23.1, windows/amd64, converted package src/core/context.

Verdicts

Test go test go2cs
TestAfterFuncCalledAfterCancel pass pass
TestAfterFuncCalledAfterTimeout pass pass
TestAfterFuncCalledAsynchronously pass pass
TestAfterFuncCalledImmediately pass pass
TestAfterFuncNotCalledAfterStop pass pass
TestAllocs pass fail (disclosed)
TestBackground pass pass
TestCancelRemoves pass pass
TestCanceledTimeout pass pass
TestCause pass pass
TestCause/Background pass pass
TestCause/TODO pass pass
TestCause/WithCancel pass pass
TestCause/WithCancelCause pass pass
TestCause/WithCancelCause:_child_cause_after_nil pass pass
TestCause/WithCancelCause:_child_cause_before_nil pass pass
TestCause/WithCancelCause:_parent_cause_after_child pass pass
TestCause/WithCancelCause:_parent_cause_after_nil pass pass
TestCause/WithCancelCause:_parent_cause_before_child pass pass
TestCause/WithCancelCause:_parent_cause_before_nil pass pass
TestCause/WithCancelCause_nil pass pass
TestCause/WithTimeout pass pass
TestCause/WithTimeoutCause pass pass
TestCause/WithTimeoutCause_canceled pass pass
TestCause/WithTimeoutCause_stacked pass pass
TestCause/WithTimeoutCause_stacked_canceled pass pass
TestCause/WithTimeout_canceled pass pass
TestCause/WithoutCancel pass pass
TestCause/WithoutCancel_canceled pass pass
TestCause/WithoutCancel_timeout pass pass
TestCauseRace pass pass
TestChildFinishesFirst pass pass
TestCustomContextAfterFuncAfterFunc pass pass
TestCustomContextAfterFuncCancel pass pass
TestCustomContextAfterFuncTimeout pass pass
TestCustomContextAfterFuncUnregisterAfterFunc pass pass
TestCustomContextAfterFuncUnregisterCancel pass pass
TestCustomContextAfterFuncUnregisterTimeout pass pass
TestCustomContextCause pass pass
TestCustomContextGoroutines pass pass
TestCustomContextPropagation pass pass
TestDeadline pass pass
TestDeadlineExceededIsNetError pass pass
TestDeadlineExceededSupportsTimeout pass pass
TestInterlockedCancels pass pass
TestInvalidDerivedFail pass pass
TestLayersCancel pass pass
TestLayersTimeout pass pass
TestParentFinishesChild pass pass
TestSimultaneousCancels pass pass
TestTODO pass pass
TestTimeout pass pass
TestValues pass pass
TestWithCancel pass pass
TestWithCancelCanceledParent pass pass
TestWithCancelSimultaneouslyCanceledParent pass pass
TestWithValueChecksKey pass pass
TestWithoutCancel pass pass

Disclosed divergences

A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s hand-owned go2cs_test_disclosures.json; a disclosed test that fails any other way is still a hard mismatch.

Test Class Pinned reason
TestAllocs alloc-count-semantics exact-count AllocsPerRun asserts over five context constructors (wants 0/3/12/5/8 mallocs): the managed shim is deliberately byte-derived (no CLR malloc counter), so the four nonzero-count asserts can never agree whatever the allocation behavior - measured 128/754/3744/2104/4876 BYTES for Background/WithValue/WithTimeout/WithCancel/WithTimeout(5ms), and one failing subtest fails the whole test; see the AllocsPerRun entry in docs/ConversionStrategies-Reference.md

Excluded declarations

Declarations filtered from both sides of the comparison, and therefore not claimed above: Benchmark, Fuzz and Example declarations the converted host does not execute, plus any test requiring a capability the managed runtime does not provide — a testing member the host has not implemented, or a platform behavior it provably cannot reproduce. Each is named with the capability it needs.