| [!fuzz] skip |
| [short] skip |
| |
| go test -fuzz=FuzzA -fuzztime=100x fuzz_setenv_test.go |
| |
| -- fuzz_setenv_test.go -- |
| package fuzz |
| |
| import ( |
| "flag" |
| "os" |
| "testing" |
| ) |
| |
| func FuzzA(f *testing.F) { |
| if s := os.Getenv("TEST_FUZZ_SETENV_A"); isWorker() && s == "" { |
| f.Fatal("environment variable not set") |
| } else if !isWorker() && s != "" { |
| f.Fatal("environment variable already set") |
| } |
| f.Setenv("TEST_FUZZ_SETENV_A", "A") |
| if os.Getenv("TEST_FUZZ_SETENV_A") == "" { |
| f.Fatal("Setenv did not set environment variable") |
| } |
| f.Fuzz(func(*testing.T, []byte) {}) |
| } |
| |
| func FuzzB(f *testing.F) { |
| if os.Getenv("TEST_FUZZ_SETENV_A") != "" { |
| f.Fatal("environment variable not cleared after FuzzA") |
| } |
| f.Skip() |
| } |
| |
| func isWorker() bool { |
| f := flag.Lookup("test.fuzzworker") |
| if f == nil { |
| return false |
| } |
| get, ok := f.Value.(flag.Getter) |
| if !ok { |
| return false |
| } |
| return get.Get() == interface{}(true) |
| } |