Previously, in the ASDF test suite, we would run tests, checking for
errors, and if there were errors, we would exit with a non-zero status,
signaling to our shell script that a test had failed.
However, experimenting with ECL, I found that there were cases where ECL
would fail with a SERIOUS-CONDITION that was not an error. These were
typically various flavors of STORAGE-CONDITION, and need to be caught so
that non-interactive tests don't hang when there's some resource exhaustion.
Accordingly, I modified the ASDF test suite to catch not just ERRORs,
but also SERIOUS-CONDITIONs.
Unfortunately, this breaks the tests on CCL.
The problem appears in one of our tests where we call (EXIT-LISP 0).
This is (ccl:quit 0) on CCL.
Unfortunately, it seems that CCL signals a CCL:PROCESS-RESET when
quitting and PROCESS-RESET is a SERIOUS-CONDITION.
So how should I modify the tests so that I catch the other
SERIOUS-CONDITIONs (like STORAGE-CONDITIONs) without mistakenly catching
these PROCESS-RESET conditions? I suppose I can either catch all
SERIOUS-CONDITIONs *except* PROCESS-RESET, and just decline those? Or
could I have the definition of EXIT-LISP handle the PROCESS-RESET
condition? Without more knowledge, it seems possible that could mess up
graceful exit.
Could you clarify PROCESS-RESET a little for me? The spec indicates
that SERIOUS-CONDITIONs are "All conditions serious enough to require
interactive intervention if not handled should inherit from the type
serious-condition." I'm not sure how that aligns with the use of
PROCESS-RESET as described in the manual.
Thanks,
R