package app import ( "os" "testing" ) // restoreEnvAfterTest clears names for a test and restores both their prior // values and their set/unset state during cleanup. func restoreEnvAfterTest(t *testing.T, names ...string) { t.Helper() originals := make(map[string]string, len(names)) present := make(map[string]bool, len(names)) for _, name := range names { value, ok := os.LookupEnv(name) originals[name] = value present[name] = ok if err := os.Unsetenv(name); err != nil { t.Fatalf("Unsetenv(%q): %v", name, err) } } t.Cleanup(func() { for _, name := range names { if present[name] { _ = os.Setenv(name, originals[name]) } else { _ = os.Unsetenv(name) } } }) }