mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-26 07:33:47 +00: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:
parent
0c330bed24
commit
0155bd0fdb
@ -274,7 +274,7 @@ DATA is displayed to the user and should state the reason for skipping."
|
||||
It should only be stopped when ran from inside ert--run-test-internal."
|
||||
(when (and (not (symbolp debugger)) ; only run on anonymous debugger
|
||||
(memq error-symbol '(ert-test-failed ert-test-skipped)))
|
||||
(funcall debugger 'error data)))
|
||||
(funcall debugger 'error (list error-symbol data))))
|
||||
|
||||
(defun ert--special-operator-p (thing)
|
||||
"Return non-nil if THING is a symbol naming a special operator."
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user