12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright (c) 2015 Arista Networks, Inc.
- // Use of this source code is governed by the Apache License 2.0
- // that can be found in the COPYING file.
- package test
- import (
- "fmt"
- "runtime"
- "testing"
- )
- // ShouldPanic will test is a function is panicking
- func ShouldPanic(t *testing.T, fn func()) {
- t.Helper()
- defer func() {
- t.Helper()
- if r := recover(); r == nil {
- t.Errorf("%sThe function %p should have panicked",
- getCallerInfo(), fn)
- }
- }()
- fn()
- }
- // ShouldPanicWith will test is a function is panicking with a specific message
- func ShouldPanicWith(t *testing.T, msg interface{}, fn func()) {
- t.Helper()
- defer func() {
- t.Helper()
- if r := recover(); r == nil {
- t.Errorf("%sThe function %p should have panicked with %#v",
- getCallerInfo(), fn, msg)
- } else if d := Diff(msg, r); len(d) != 0 {
- t.Errorf("%sThe function %p panicked with the wrong message.\n"+
- "Expected: %#v\nReceived: %#v\nDiff:%s",
- getCallerInfo(), fn, msg, r, d)
- }
- }()
- fn()
- }
- func getCallerInfo() string {
- _, file, line, ok := runtime.Caller(4)
- if !ok {
- return ""
- }
- return fmt.Sprintf("%s:%d\n", file, line)
- }
|