35 lines
652 B
Go
35 lines
652 B
Go
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()
|
|
}
|