forked from NYANDEV/forgejo
29 lines
831 B
Go
29 lines
831 B
Go
|
// Package gotest contains internal functionality. Although this package
|
||
|
// contains one or more exported names it is not intended for public
|
||
|
// consumption. See the examples package for how to use this project.
|
||
|
package gotest
|
||
|
|
||
|
import (
|
||
|
"runtime"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func ResolveExternalCaller() (file string, line int, name string) {
|
||
|
var caller_id uintptr
|
||
|
callers := runtime.Callers(0, callStack)
|
||
|
|
||
|
for x := 0; x < callers; x++ {
|
||
|
caller_id, file, line, _ = runtime.Caller(x)
|
||
|
if strings.HasSuffix(file, "_test.go") || strings.HasSuffix(file, "_tests.go") {
|
||
|
name = runtime.FuncForPC(caller_id).Name()
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
file, line, name = "<unkown file>", -1, "<unknown name>"
|
||
|
return // panic?
|
||
|
}
|
||
|
|
||
|
const maxStackDepth = 100 // This had better be enough...
|
||
|
|
||
|
var callStack []uintptr = make([]uintptr, maxStackDepth, maxStackDepth)
|