mirror of
https://github.com/libp2p/go-libp2p-core.git
synced 2025-03-25 12:50:08 +08:00
29 lines
540 B
Go
29 lines
540 B
Go
|
package catch
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestCatch(t *testing.T) {
|
||
|
buf := new(bytes.Buffer)
|
||
|
|
||
|
oldPanicWriter := panicWriter
|
||
|
t.Cleanup(func() { panicWriter = oldPanicWriter })
|
||
|
panicWriter = buf
|
||
|
|
||
|
panicAndCatch := func() (err error) {
|
||
|
defer func() { HandlePanic(recover(), &err, "somewhere") }()
|
||
|
|
||
|
panic("here")
|
||
|
}
|
||
|
|
||
|
err := panicAndCatch()
|
||
|
require.Error(t, err)
|
||
|
require.Contains(t, err.Error(), "panic in somewhere: here")
|
||
|
|
||
|
require.Contains(t, buf.String(), "caught panic: here")
|
||
|
}
|