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