]> git.eshelyaron.com Git - emacs.git/commit
Improve ert backtrace recording
authorNoam Postavsky <npostavs@gmail.com>
Sat, 11 Feb 2017 22:19:41 +0000 (17:19 -0500)
committerNoam Postavsky <npostavs@gmail.com>
Thu, 29 Jun 2017 23:37:25 +0000 (19:37 -0400)
commitead545824e511ab18d18b5223eab80e1f4fe3d64
tree87b186e8e0052cb043bdbb6af23ff44479955240
parent522e3c15853279bf2a0ed1759c5b0ba3c9e0b7be
Improve ert backtrace recording

Change ert to use the new `backtrace-frames' function instead of
collecting frames one by one with `backtrace-frame'.  Additionally,
collect frames starting from `signal' instead the somewhat arbitrary
"6 from the bottom".  Skipping 6 frames would skip the expression that
actually caused the signal that triggered the debugger.  Possibly 6
was chosen because in the case of a failed test, the triggering frame
is an `ert-fail' call, which is not so interesting.  But in case of a
test throwing an error, this drops the `error' call which is too much.

* lisp/emacs-lisp/debug.el (debugger-make-xrefs): Remove.
* lisp/emacs-lisp/ert.el (ert--make-xrefs-region): Bring in relevant
code from `debugger-make-xrefs'.
(ert--print-backtrace): Add DO-XREFS parameter, delegate to
`debugger-insert-backtrace'.
(ert--run-test-debugger): Record the backtrace frames starting from
the instigating `signal' call.
(ert-run-tests-batch): Pass nil for `ert--print-backtrace's new
DO-XREFS parameter.
(ert-results-pop-to-backtrace-for-test-at-point): Pass t as DO-XREFS
to `ert--print-backtrace' and remove call to `debugger-make-xrefs'.
* test/lisp/emacs-lisp/ert-tests.el (ert-test-record-backtrace): Check
the backtrace list instead of comparing its string representation.
Expect `signal' to be the first frame.
lisp/emacs-lisp/debug.el
lisp/emacs-lisp/ert.el
test/lisp/emacs-lisp/ert-tests.el