1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package xerr
- import (
- "errors"
- "fmt"
- "runtime"
- "testing"
- "github.com/getsentry/sentry-go"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func TestStackTraceInSentry(t *testing.T) {
- err := WithStack(errors.New("test error"))
- stackTrace := sentry.ExtractStacktrace(err)
- require.NotNil(t, stackTrace)
- assert.Equal(t, 1, len(stackTrace.Frames))
- }
- func TestWithStackRepeat(t *testing.T) {
- err := WithStack(errors.New("test error"))
- err = wrapErr(err)
- _, ok := err.(*withStack)
- require.True(t, ok)
- }
- func TestWrapStack(t *testing.T) {
- err := wrapStack(nil, 0)
- require.Nil(t, err, "wrap nil")
- err = wrapStack(errors.New("test error"), 0)
- require.NotNil(t, err)
- assert.Equal(t, "test error", err.Error(), "wrap normal error")
- }
- func wrapErr(err error) error {
- return wrapStack(err, 1)
- }
- func funcStack(s *stack) string {
- frame, _ := runtime.CallersFrames(*s).Next()
- return fmt.Sprintf("pkg.xerr.%s", funcname(frame.Function))
- }
|