package assert import ( "regexp" "testing" ) type PanicT struct { Function func() Expect string Regexp bool } func Panic(t *testing.T, p PanicT) { defer func() { if r := recover(); r != nil { mismatch := false if p.Regexp && !regexp.MustCompile(p.Expect).MatchString(r.(string)) { mismatch = true } if !p.Regexp && p.Expect != r.(string) { mismatch = true } if mismatch { t.Errorf( "Code did panic, but unexpected panic message received:\nexpected: %q\nactual: %q", p.Expect, r) } } else { t.Errorf("Function did not panic (expected panic message: %s)", p.Expect) } }() p.Function() }