mirror of
https://github.com/stretchr/testify.git
synced 2025-04-27 21:24:09 +00:00
refill stack frame buffer after it's exhausted
This commit is contained in:
parent
4a90eff4ae
commit
28e0be5092
@ -24,6 +24,8 @@ import (
|
|||||||
"github.com/stretchr/testify/assert/yaml"
|
"github.com/stretchr/testify/assert/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const stackFrameBufferSize = 10
|
||||||
|
|
||||||
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
|
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
|
||||||
|
|
||||||
// TestingT is an interface wrapper around *testing.T
|
// TestingT is an interface wrapper around *testing.T
|
||||||
@ -217,8 +219,14 @@ func CallerInfo() []string {
|
|||||||
var name string
|
var name string
|
||||||
|
|
||||||
callers := []string{}
|
callers := []string{}
|
||||||
pcs := make([]uintptr, 50)
|
pcs := make([]uintptr, stackFrameBufferSize)
|
||||||
n := runtime.Callers(1, pcs)
|
offset := 1
|
||||||
|
n := runtime.Callers(offset, pcs)
|
||||||
|
maybeMore := true
|
||||||
|
if n < stackFrameBufferSize {
|
||||||
|
maybeMore = false
|
||||||
|
}
|
||||||
|
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return []string{}
|
return []string{}
|
||||||
}
|
}
|
||||||
@ -269,8 +277,22 @@ func CallerInfo() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !more {
|
if !more {
|
||||||
|
// We know we already have less than a buffer's worth of frames
|
||||||
|
if !maybeMore {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
offset += stackFrameBufferSize
|
||||||
|
n = runtime.Callers(offset, pcs)
|
||||||
|
if n < stackFrameBufferSize {
|
||||||
|
maybeMore = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if n == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
frames = runtime.CallersFrames(pcs[:n])
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return callers
|
return callers
|
||||||
|
Loading…
x
Reference in New Issue
Block a user