Rework test infrastructure to keep track of tests which are disabled
authorJim Wise <jwise@draga.com>
Mon, 6 Jun 2011 17:22:34 +0000 (13:22 -0400)
committerJim Wise <jwise@draga.com>
Mon, 6 Jun 2011 17:22:34 +0000 (13:22 -0400)
commit4c81c652cdc32faefee1bccb84c3c9a7854e3edd
treec7ac188b51732c8f71eadcac6499ea9991f6722e
parent0fd1ec424a7e5969a76a2531e42a6b2621e63c11
Rework test infrastructure to keep track of tests which are disabled
on the platform/feature combination being tested, and to differentiate
between tests disabled because the test is broken in some way, and those
skipped because the platform in question is broken in some way (or the test
is irrelevant for the given feature set).

This takes the form of two new keywords to WITH-TEST -- :BROKEN-ON, which
notes that the test itself is broken for a given feature expression, or
:SKIPPED-ON, which skips a test for a given feature expression.  This
information is noted at the end of a test run like so:

  Finished running tests.
  Status:
   Skipped (broken):    debug.impure.lisp / (TRACE ENCAPSULATE NIL)
   Skipped (broken):    debug.impure.lisp / (TRACE-RECURSIVE ENCAPSULATE NIL)
   Expected failure:    packages.impure.lisp / USE-PACKAGE-CONFLICT-SET
   Expected failure:    packages.impure.lisp / IMPORT-SINGLE-CONFLICT
   (38 tests skipped for this combination of platform and features)
  ok
  //apparent success (reached end of run-tests.sh normally)
  Thu Jun  2 15:59:31 EDT 2011

Note that there is no :WORKS-ON or :ENABLED-ON, even though many of the
read-time conditionals this replaced were for a given feature instead of for
its absence -- you can still do, eg:

  (with-test (:name foo :broken-on '(not :x86)) ...)

but such declarations are almost always too general (one exception being
`:skipped-on '(not :sb-thread)'), and IMO, should be discouraged.

While here, re-enable a bunch of tests previously skipped on Solaris which
now work.
22 files changed:
tests/alien.impure.lisp
tests/deadline.impure.lisp
tests/debug.impure.lisp
tests/dynamic-extent.impure.lisp
tests/eval.impure.lisp
tests/exhaust.impure.lisp
tests/float.pure.lisp
tests/gc.impure.lisp
tests/hash.impure.lisp
tests/interface.impure.lisp
tests/interface.pure.lisp
tests/octets.pure.lisp
tests/packages.impure.lisp
tests/pathnames.impure.lisp
tests/print.impure.lisp
tests/run-program.impure.lisp
tests/run-tests.lisp
tests/stream.impure.lisp
tests/test-util.lisp
tests/threads.pure.lisp
tests/timer.impure.lisp
tests/win32-foreign-stack-unwind.impure.lisp