-
Notifications
You must be signed in to change notification settings - Fork 1
/
stack_trace_test.go
48 lines (37 loc) · 1.13 KB
/
stack_trace_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package sqldb
import (
"errors"
"runtime/debug"
"testing"
"github.com/smarty/assertions/should"
"github.com/smarty/gunit"
)
func TestStackTraceFixture(t *testing.T) {
gunit.Run(new(StackTraceFixture), t)
}
type StackTraceFixture struct {
*gunit.Fixture
stack *StackTrace
}
func (this *StackTraceFixture) TestWhenNil_ReturnsActualStackTrace() {
actual := this.stack.StackTrace()
expected := string(debug.Stack())
actual = actual[len(actual)-860:] // last 860 characters
expected = expected[len(expected)-860:] // last 860 characters
this.So(actual, should.Equal, expected)
}
func (this *StackTraceFixture) TestWhenNonNil_ReturnsPreSetMessage() {
this.stack = ContrivedStackTrace("HELLO")
this.So(this.stack.StackTrace(), should.Equal, "HELLO")
}
func (this *StackTraceFixture) TestWrap_NilErrorReturned() {
var err error
err = this.stack.Wrap(err)
this.So(err, should.BeNil)
}
func (this *StackTraceFixture) TestWrap_NonNilErrorDecorated() {
this.stack = ContrivedStackTrace("GOPHER STACK")
err := errors.New("HELLO")
err = this.stack.Wrap(err)
this.So(err.Error(), should.Equal, "HELLO\nStack Trace:\nGOPHER STACK")
}