50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package mctx
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
. "testing"
|
|
|
|
"github.com/mediocregopher/mediocre-go-lib/mtest/massert"
|
|
)
|
|
|
|
func TestStack(t *T) {
|
|
foo := WithStack(context.Background(), 0)
|
|
fooStack, ok := Stack(foo)
|
|
massert.Fatal(t, massert.Equal(true, ok))
|
|
|
|
// test Frame
|
|
frame := fooStack.Frame()
|
|
massert.Fatal(t, massert.All(
|
|
massert.Equal(true, strings.Contains(frame.File, "stack_test.go")),
|
|
massert.Equal(true, strings.Contains(frame.Function, "TestStack")),
|
|
))
|
|
|
|
frames := fooStack.Frames()
|
|
massert.Fatal(t, massert.Comment(
|
|
massert.All(
|
|
massert.Equal(true, len(frames) >= 2),
|
|
massert.Equal(true, strings.Contains(frames[0].File, "stack_test.go")),
|
|
massert.Equal(true, strings.Contains(frames[0].Function, "TestStack")),
|
|
),
|
|
"fooStack.FullString():\n%s", fooStack.FullString(),
|
|
))
|
|
|
|
// test that WithStack works and can be used to skip frames
|
|
inner := func() {
|
|
bar := WithStack(foo, 1)
|
|
barStack, _ := Stack(bar)
|
|
frames := barStack.Frames()
|
|
massert.Fatal(t, massert.Comment(
|
|
massert.All(
|
|
massert.Equal(true, len(frames) >= 2),
|
|
massert.Equal(true, strings.Contains(frames[0].File, "stack_test.go")),
|
|
massert.Equal(true, strings.Contains(frames[0].Function, "TestStack")),
|
|
),
|
|
"barStack.FullString():\n%s", barStack.FullString(),
|
|
))
|
|
}
|
|
inner()
|
|
|
|
}
|