You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
873 B
46 lines
873 B
// run
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime/debug"
|
|
"strings"
|
|
)
|
|
|
|
type Inner struct {
|
|
Err int
|
|
}
|
|
|
|
func (i *Inner) NotExpectedInStackTrace() int {
|
|
if i == nil {
|
|
return 86
|
|
}
|
|
return 17 + i.Err
|
|
}
|
|
|
|
type Outer struct {
|
|
Inner
|
|
}
|
|
|
|
func ExpectedInStackTrace() {
|
|
var o *Outer
|
|
println(o.NotExpectedInStackTrace())
|
|
}
|
|
|
|
func main() {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
stacktrace := string(debug.Stack())
|
|
if strings.Contains(stacktrace, "NotExpectedInStackTrace") {
|
|
fmt.Println("FAIL, stacktrace contains NotExpectedInStackTrace")
|
|
}
|
|
if !strings.Contains(stacktrace, "ExpectedInStackTrace") {
|
|
fmt.Println("FAIL, stacktrace does not contain ExpectedInStackTrace")
|
|
}
|
|
} else {
|
|
fmt.Println("FAIL, should have panicked but did not")
|
|
}
|
|
}()
|
|
ExpectedInStackTrace()
|
|
}
|