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.
- BenchmarkCancelTree (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCheckCanceled (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCommonParentCancel (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkContextCancelDone (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkDeepValueNewGoRoutine (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkDeepValueSameGoRoutine (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkWithTimeout (benchmark): benchmark execution is deferred to Phase 4D
- ExampleAfterFunc_cond (example): example execution is deferred to Phase 4D
- ExampleAfterFunc_connection (example): example execution is deferred to Phase 4D
- ExampleAfterFunc_merge (example): example execution is deferred to Phase 4D
- ExampleWithCancel (example): example execution is deferred to Phase 4D
- ExampleWithDeadline (example): example execution is deferred to Phase 4D
- ExampleWithTimeout (example): example execution is deferred to Phase 4D
- ExampleWithValue (example): example execution is deferred to Phase 4D