diff options
author | David Lazar <lazard@golang.org> | 2017-03-07 21:14:12 -0500 |
---|---|---|
committer | David Lazar <lazard@golang.org> | 2017-03-29 17:27:38 +0000 |
commit | 7bf0adc6add500054ccbc37a868ab0fab120fa24 (patch) | |
tree | 615a00e48b1788400291466d210548a564ef9cc1 /test/inline_callers.go | |
parent | ee97216a1787a979911d43c0c5c582b5492a2205 (diff) | |
download | go-7bf0adc6add500054ccbc37a868ab0fab120fa24.tar.gz go-7bf0adc6add500054ccbc37a868ab0fab120fa24.zip |
runtime: include inlined calls in result of CallersFrames
Change-Id: If1a3396175f2afa607d56efd1444181334a9ae3e
Reviewed-on: https://go-review.googlesource.com/37862
Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'test/inline_callers.go')
-rw-r--r-- | test/inline_callers.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/inline_callers.go b/test/inline_callers.go index c387362fa8..fb6ff6c769 100644 --- a/test/inline_callers.go +++ b/test/inline_callers.go @@ -40,6 +40,21 @@ func testCallers(skp int) (frames []string) { return } +func testCallersFrames(skp int) (frames []string) { + skip = skp + f() + callers := pcs[:npcs] + ci := runtime.CallersFrames(callers) + for { + frame, more := ci.Next() + frames = append(frames, frame.Function) + if !more || frame.Function == "main.main" { + break + } + } + return +} + var expectedFrames [][]string = [][]string{ 0: {"runtime.Callers", "main.testCallers", "main.main"}, 1: {"main.testCallers", "main.main"}, @@ -49,6 +64,8 @@ var expectedFrames [][]string = [][]string{ 5: {"main.main"}, } +var allFrames = []string{"runtime.Callers", "main.h", "main.g", "main.f", "main.testCallersFrames", "main.main"} + func same(xs, ys []string) bool { if len(xs) != len(ys) { return false @@ -68,5 +85,11 @@ func main() { if !same(frames, expected) { log.Fatalf("testCallers(%d):\n got %v\n want %v", i, frames, expected) } + + frames = testCallersFrames(i) + expected = allFrames[i:] + if !same(frames, expected) { + log.Fatalf("testCallersFrames(%d):\n got %v\n want %v", i, frames, expected) + } } } |