99 "testing"
1010
1111 "github.com/pkg/errors"
12- rollbar "github.com/rollbar/rollbar-go"
13- "go.uber.org/zap"
14- "go.uber.org/zap/zaptest"
12+ rollbarerr "github.com/rollbar/rollbar-go/errors"
1513)
1614
1715func TestStack (t * testing.T ) {
@@ -20,9 +18,9 @@ func TestStack(t *testing.T) {
2018 err := errors .New ("hi" )
2119 n := runtime .Callers (1 , pc )
2220
23- stack := []rollbar. Frame ( rError { err : err }. Stack () )
24- if n == 0 {
25- t .Fatal ( "unable to recover stack information " )
21+ stack , ok := rollbarerr . StackTracer ( err )
22+ if ! ok {
23+ t .Fatalf ( "rollbarerr.StackTracer returned false " )
2624 }
2725 pc = pc [:n ]
2826 frames := runtime .CallersFrames (pc )
@@ -41,12 +39,12 @@ func TestStack(t *testing.T) {
4139 }
4240
4341 t .Logf ("want: method=%v %v:%v" , want .Function , want .File , want .Line )
44- t .Logf (" got: method=%v %v:%v" , got .Method , got .Filename , got .Line )
45- if want .File != got .Filename {
46- t .Fatalf ("filename mismatch: i=%d\n want=%s\n got=%s\n " , i , want .File , got .Filename )
42+ t .Logf (" got: method=%v %v:%v" , got .Function , got .File , got .Line )
43+ if want .File != got .File {
44+ t .Fatalf ("filename mismatch: i=%d\n want=%s\n got=%s\n " , i , want .File , got .File )
4745 }
48- if want .Func .Name () != got .Method {
49- t .Fatalf ("func name mismatch: i=%d\n want=%s\n got=%s\n " , i , want .Func .Name (), got .Method )
46+ if want .Func .Name () != got .Function {
47+ t .Fatalf ("func name mismatch: i=%d\n want=%s\n got=%s\n " , i , want .Func .Name (), got .Function )
5048 }
5149 if want .Line != got .Line {
5250 t .Fatalf ("line number mismatch: i=%d\n want=%d\n got=%d\n " , i , want .Line , got .Line )
@@ -63,36 +61,23 @@ func TestStack(t *testing.T) {
6361 }
6462}
6563
66- func TestError (t * testing.T ) {
67- err := errors .New ("hi" )
68- rErr := rError {err : err }
69- if rErr .Error () != err .Error () {
70- t .Fatalf ("Error() mismatch:\n want=%s\n got=%s\n " , err .Error (), rErr .Error ())
71- }
72- }
73-
74- func TestCause (t * testing.T ) {
75- err := errors .New ("hi" )
76- rErr := rError {err : err }
77- if rErr .Cause () != err {
78- t .Fatalf ("Cause() mismatch:\n want=%v\n got=%v\n " , err , rErr .Cause ())
79- }
80- }
81-
8264func TestPkgErrorsCompat (t * testing.T ) {
83- log = zaptest .NewLogger (t , zaptest .Level (zap .WarnLevel )).Sugar ()
84- for _ , err := range []error {
85- errors .Errorf ("Errorf" ),
86- errors .New ("New" ),
87- errors .WithMessage (errors .New ("New" ), "WithMessage errors.New" ),
88- errors .WithStack (fmt .Errorf ("fmt.Errorf" )),
89- errors .WithStack (errors .New ("New" )),
90- errors .Wrap (fmt .Errorf ("fmt.Errorf" ), "Wrap fmt.Errrof" ),
91- errors .Wrap (errors .New ("New" ), "Wrap errors.New" ),
65+ for name , err := range map [string ]error {
66+ "Errorf" : errors .Errorf ("Errorf" ),
67+ "New" : errors .New ("New" ),
68+ "WithStack(fmt.Errorf)" : errors .WithStack (fmt .Errorf ("fmt.Errorf" )),
69+ "WithStack(errors.New)" : errors .WithStack (errors .New ("New" )),
70+ "Wrap(fmt.Errorf)" : errors .Wrap (fmt .Errorf ("fmt.Errorf" ), "Wrap fmt.Errrof" ),
71+ "Wrap(errors.New)" : errors .Wrap (errors .New ("New" ), "Wrap errors.New" ),
9272 } {
93- rErr := rError {err : err }
94- if rErr .Stack () == nil {
95- t .Fatalf ("expected err to implement stackTracer but does not: %v" , err )
96- }
73+ t .Run (name , func (t * testing.T ) {
74+ stack , ok := rollbarerr .StackTracer (err )
75+ if ! ok {
76+ t .Fatal ("rollbarerr.StackTracer returned false" )
77+ }
78+ if stack == nil {
79+ t .Fatalf ("expected err to implement rollbar.StackTracer but does not: %v" , err )
80+ }
81+ })
9782 }
9883}
0 commit comments