[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24402: More Information
From: |
Gemini Lasswell |
Subject: |
bug#24402: More Information |
Date: |
Mon, 19 Sep 2016 21:27:54 -0700 |
I’ve done some investigating of why this is happening. testcover-start
transforms:
(should-error (my-error))
into:
(should-error (testcover-after 2 (my-error)))
Then the macro expansion of should-error separates the form which it
is passed into a function symbol and list of arguments, and applies
the function to the arguments inside of a condition-case that traps
errors. The problem is that the arguments are evaluated first, outside
of the condition-case, so errors in their evaluation do not get
caught. This problem is not specific to testcover. In this example,
the first test passes and the second fails:
(defun div-by (n)
(/ 100 n))
(defmacro log-div-by (n)
`(message "div-by: %d" (div-by ,n)))
(ert-deftest test-div-by ()
(should-error (div-by 0)))
(ert-deftest test-log-div-by ()
(should-error (log-div-by 0)))