1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-04 11:00:45 -08:00

Fix bug in how ERT invokes its debugger.

The debugger needs to receive a list of the error symbol and data;
cf. the documentation of the `debugger' variable.  This bug manifested
itself in ERT forms such as (should (integerp (ert-fail "Boo"))),
which resulted in an incorrect condition object.  Note that forms such
as (should (ert-fail "Boo")) weren't affected because they wouldn't
use the `ert--should-signal-hook'.

* test/emacs-lisp/ert.el (ert--should-signal-hook): Call debugger with
the right arguments.

* test/lisp/emacs-lisp/ert-tests.el (ert-test-fail-inside-should): Add
unit test.
This commit is contained in:
Philipp Stephani 2020-12-07 21:41:40 +01:00
parent 0c330bed24
commit 0155bd0fdb
2 changed files with 11 additions and 1 deletions

View file

@ -806,6 +806,16 @@ This macro is used to test if macroexpansion in `should' works."
:expected-result :failed ;; FIXME! Bug#11218
(should-not (with-demoted-errors (error "Foo"))))
(ert-deftest ert-test-fail-inside-should ()
"Check that `ert-fail' inside `should' works correctly."
(let ((result (ert-run-test
(make-ert-test
:name 'test-1
:body (lambda () (should (integerp (ert-fail "Boo"))))))))
(should (ert-test-failed-p result))
(should (equal (ert-test-failed-condition result)
'(ert-test-failed ("Boo"))))))
(provide 'ert-tests)