| [!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") |
| } |
| }) |
| } |