Subject: Re: bug#24402: should-error doesn't catch all errors

From: [email-masked]
Date: Wed, 12 Jul 2017 21:31:19 -0400

Alex <[email-masked]> writes:

> [email-masked] writes:
>
>> Does it also work when loading the elc version of the test file?  (try
>> 'make check TEST_LOAD_EL=no')
>
> Oh, it doesn't load the elc version by default? That's surprising; I
> think that should be documented in the test README.
>
> I get 3 test failures with TEST_LOAD_EL=no, but I don't believe they're
> because of me. On a mostly clean master (d014a5e15) those 3 also error.
> One of them is simple to fix (the (require 'subr-x) should not be inside
> eval-when-compile in dom-tests).

Ah, the `should' blocks inlining during compilation.  Is that necessary?
Probably yes if we expect to catch errors during macroexpansion I guess.

> The other failing tests are
> subr-test-backtrace-integration-test and cl-lib-defstruct-record.

Hmm, I'll see if I can fix these.

>> What about tests like this?
>>
>>     (ert-deftest check-error-handling ()
>>       (should
>>        (eq 42
>>            (condition-case ()
>>                (/ 1 0)
>>              (arith-error 42)))))
>
> It works for me, yes. As long as `debugger' is set to a symbol. I can
> make it a bit more robust by using an additional defvar in
> ert--run-test-internal.
>
> Are you asking because it doesn't work for you?

No, I'm just trying to explore the edges of this solution.  Isn't
`debugger' bound to a non-symbol while running the the tests?  I'm
confused as to why this solution works.