-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstack_test.go
92 lines (85 loc) · 2.05 KB
/
stack_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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package trc_test
import (
"context"
"strings"
"testing"
"github.com/peterbourgon/trc"
"github.com/peterbourgon/trc/eztrc"
)
func testCallStackFoo(t *testing.T, ctx context.Context) {
t.Helper()
tr := trc.Get(ctx)
tr.Tracef("foo 1")
testCallStackBar(t, ctx)
tr.Tracef("foo 2")
}
func testCallStackBar(t *testing.T, ctx context.Context) {
t.Helper()
tr := trc.Get(ctx)
tr.LazyTracef("bar 1")
testCallStackBaz(t, ctx)
tr.LazyTracef("bar 2")
}
func testCallStackBaz(t *testing.T, ctx context.Context) {
t.Helper()
eztrc.Tracef(ctx, "baz 1")
func() {
eztrc.LazyTracef(ctx, "quux")
}()
eztrc.Tracef(ctx, "baz 2")
}
func TestEventStacks(t *testing.T) {
t.Parallel()
ctx, tr := trc.New(context.Background(), "src", "cat")
testCallStackFoo(t, ctx)
tr.Finish()
events := tr.Events()
AssertEqual(t, 7, len(events))
for i, want := range []struct {
function string
fileline string
what string
}{
{
function: "github.com/peterbourgon/trc_test.testCallStackFoo",
fileline: "stack_test.go:15",
what: "foo 1",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackBar",
fileline: "stack_test.go:23",
what: "bar 1",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackBaz",
fileline: "stack_test.go:30",
what: "baz 1",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackBaz.func1",
fileline: "stack_test.go:32",
what: "quux",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackBaz",
fileline: "stack_test.go:34",
what: "baz 2",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackBar",
fileline: "stack_test.go:25",
what: "bar 2",
},
{
function: "github.com/peterbourgon/trc_test.testCallStackFoo",
fileline: "stack_test.go:17",
what: "foo 2",
},
} {
AssertEqual(t, want.function, events[i].Stack[0].Function)
if have := events[i].Stack[0].FileLine; !strings.HasSuffix(have, want.fileline) {
t.Errorf("%s: want %s", have, want.fileline)
}
AssertEqual(t, want.what, events[i].What)
}
}