proosal: removing test-result objects Per Bothner (03 Apr 2005 08:11 UTC)
Re: proosal: removing test-result objects Donovan Kolbly (04 Apr 2005 14:18 UTC)
Re: proosal: removing test-result objects Per Bothner (05 Apr 2005 07:24 UTC)
Re: proosal: removing test-result objects Donovan Kolbly (05 Apr 2005 16:11 UTC)

proosal: removing test-result objects Per Bothner 03 Apr 2005 08:10 UTC

As discussed in past messages, I'm leaning towords removing the
concept of a test-result "value", which in the current specification
is an association list.  Instead, I think it is better to make the
"most recent test-result" be part of the test-runner, and allow
extra properties there.

Specifically, we add:

;; Get a named property - #f if unknown.
(test-result [runner] 'property-name)
These are properties of the current or most recent test.

Exampes:
(test-result 'kind) -> one of 'pass, 'xpass, 'fail, 'xfail, or 'skip.
(test-passed?) -> same as (memq (test-result 'kind) '(pass xpass))
(test-result 'source-line) -> line number if known or #f otherwise
(test-result 'source-filename) -> file name known or #f otherwise
(test-result 'source-form) -> test expresion as a list or #f
(test-result 'test-name) -> test name or #f

(test-result-set! [runner] 'property-name value) ;; set property

(test-result-clear! [runner])
This is called internally at the start of a test to reset the
test-result state.  Specifically, all properties set by
test-result-set! are cleared.

The function on-test in (test-runner-on-test! runner on-test)
is now a 1-argument function that only takes a test-runner.
It gets the "test-result" from the test-runner.

Note that both test-cases and test-runner can examine these
properties.  For example (test-passed?) can be used to decide
whether to skip subsequent tests.

I also thing it simplies the implementation and api.  We can
set properties at various statges during the execution of a test.

Comments?  Does this seem like an improvement?
--
	--Per Bothner
xxxxxx@bothner.com   http://per.bothner.com/