return call stack in reverse

This commit is contained in:
Anand Babu (AB) Periasamy 2015-08-19 22:40:05 -07:00
parent f223c8b36d
commit b49b8cdbe8
2 changed files with 20 additions and 9 deletions

View File

@ -137,11 +137,14 @@ func (e *Error) String() string {
if e.Cause != nil { if e.Cause != nil {
str := e.Cause.Error() + "\n" str := e.Cause.Error() + "\n"
for i, tp := range e.CallTrace { callLen := len(e.CallTrace)
if len(tp.Env) > 0 { for i := callLen - 1; i >= 0; i-- {
str += fmt.Sprintf(" (%d) %s:%d %s(..) Tags: [%s]\n", i, tp.Filename, tp.Line, tp.Function, strings.Join(tp.Env["Tags"], ", ")) if len(e.CallTrace[i].Env) > 0 {
str += fmt.Sprintf(" (%d) %s:%d %s(..) Tags: [%s]\n",
i, e.CallTrace[i].Filename, e.CallTrace[i].Line, e.CallTrace[i].Function, strings.Join(e.CallTrace[i].Env["Tags"], ", "))
} else { } else {
str += fmt.Sprintf(" (%d) %s:%d %s(..)\n", i, tp.Filename, tp.Line, tp.Function) str += fmt.Sprintf(" (%d) %s:%d %s(..)\n",
i, e.CallTrace[i].Filename, e.CallTrace[i].Line, e.CallTrace[i].Function)
} }
} }

View File

@ -29,15 +29,23 @@ type MySuite struct{}
var _ = Suite(&MySuite{}) var _ = Suite(&MySuite{})
func testDummy() *probe.Error { func testDummy0() *probe.Error {
_, e := os.Stat("this-file-cannot-exit") _, e := os.Stat("this-file-cannot-exit")
es := probe.NewError(e) return probe.NewError(e)
es.Trace("Important info 1", "Import into 2") }
return es
func testDummy1() *probe.Error {
return testDummy0().Trace("DummyTag1")
}
func testDummy2() *probe.Error {
return testDummy1().Trace("DummyTag2")
} }
func (s *MySuite) TestProbe(c *C) { func (s *MySuite) TestProbe(c *C) {
es := testDummy() es := testDummy2().Trace("TopOfStack")
// Uncomment the following Println to visually test probe call trace.
// fmt.Println("Expecting a simulated error here.", es)
c.Assert(es, Not(Equals), nil) c.Assert(es, Not(Equals), nil)
newES := es.Trace() newES := es.Trace()