| [!fuzz] skip | |
| [short] skip | |
| env GOCACHE=$WORK/cache | |
| 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) | |
| } | |