| [!fuzz] skip | |
| [short] skip | |
| env GOCACHE=$WORK/cache | |
| # Test fuzz.Context. | |
| go test -vet=off context_fuzz_test.go | |
| stdout ^ok | |
| ! stdout FAIL | |
| go test -vet=off -fuzz=Fuzz -fuzztime=1x context_fuzz_test.go | |
| stdout ok | |
| ! stdout FAIL | |
| -- context_fuzz_test.go -- | |
| package context_fuzz | |
| import ( | |
| "context" | |
| "errors" | |
| "testing" | |
| ) | |
| func Fuzz(f *testing.F) { | |
| ctx := f.Context() | |
| if err := ctx.Err(); err != nil { | |
| f.Fatalf("expected non-canceled context, got %v", err) | |
| } | |
| f.Fuzz(func(t *testing.T, data []byte) { | |
| innerCtx := t.Context() | |
| if err := innerCtx.Err(); err != nil { | |
| t.Fatalf("expected inner test to not inherit canceled context, got %v", err) | |
| } | |
| t.Cleanup(func() { | |
| if !errors.Is(innerCtx.Err(), context.Canceled) { | |
| t.Fatal("expected context of inner test to be canceled after its fuzz function finished") | |
| } | |
| }) | |
| }) | |
| f.Cleanup(func() { | |
| if !errors.Is(ctx.Err(), context.Canceled) { | |
| f.Fatal("expected context canceled before cleanup") | |
| } | |
| }) | |
| } | |