mirror of https://github.com/stretchr/testify.git
Stop querying for stack frames multiple times on CallerInfo()
parent
b074924938
commit
3ca01f4bc3
|
@ -212,19 +212,23 @@ the problem actually occurred in calling code.*/
|
|||
func CallerInfo() []string {
|
||||
|
||||
var pc uintptr
|
||||
var ok bool
|
||||
var file string
|
||||
var line int
|
||||
var name string
|
||||
|
||||
callers := []string{}
|
||||
for i := 0; ; i++ {
|
||||
pc, file, line, ok = runtime.Caller(i)
|
||||
if !ok {
|
||||
// The breaks below failed to terminate the loop, and we ran off the
|
||||
// end of the call stack.
|
||||
break
|
||||
}
|
||||
pcs := []uintptr{}
|
||||
n := runtime.Callers(0, pcs)
|
||||
if n == 0 {
|
||||
return []string{}
|
||||
}
|
||||
frames := runtime.CallersFrames(pcs[:n])
|
||||
|
||||
for {
|
||||
frame, more := frames.Next()
|
||||
pc = frame.PC
|
||||
file = frame.File
|
||||
line = frame.Line
|
||||
|
||||
// This is a huge edge case, but it will panic if this is the case, see #180
|
||||
if file == "<autogenerated>" {
|
||||
|
@ -263,6 +267,10 @@ func CallerInfo() []string {
|
|||
isTest(name, "Example") {
|
||||
break
|
||||
}
|
||||
|
||||
if !more {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return callers
|
||||
|
|
Loading…
Reference in New Issue