"Test results" Donovan Kolbly (08 Mar 2005 22:53 UTC)
Re: "Test results" Per Bothner (08 Mar 2005 23:38 UTC)
Re: "Test results" Donovan Kolbly (08 Mar 2005 23:55 UTC)
Re: "Test results" Per Bothner (09 Mar 2005 00:17 UTC)

Re: "Test results" Per Bothner 08 Mar 2005 23:37 UTC

Donovan Kolbly wrote:
> The section "Test results" talks about what test results are, but it isn't
> immediately clear how they are obtained as association lists.  For my
> instance, I am implementing a <test-result> class, and I suppose I will
> need to roll up the fields into an alist.  I can do that... but when?

The test-runner-on-test/test-runner-on-test! parameter is part of the API,
and the function returned from (test-runner-on-test runner) takes a
test-result association list, so you have to create it by then.

The test-%report-result function also expects an alist, but you're free
to re-implement that function as its not part of the API.

I'm not wedded to using alists - I used them as a simple extensible
API.  We could instead hide the current test result in the test-runner,
and use callback functions:
   (test-result-get 'property-name [runner])
   (test-result-set! 'property-name value [runner])
   (test-result-clear [runner])
The reference implementation can use a "private" association list stored
in the test-runner.  RScheme can use a <test-result> object.

We might add some convenience functions:
   (test-result-passed?) == (memq (test-result-get 'result-kind) '(PASS XPASS))

This also solves Alex Shinn's request for a way to query the result of a
test.  I'm assuming test-result-clear gets called at the start of a test-*,
so the previous test's properties are available until then:

    (test-assert foo)
    (if (not (test-result-passed?))
       (test-skip ....))

> Also, I don't understand the sentence "The test-kind association return
> one of the following symbols".  Does that mean that one key in the alist
> is the symbol 'test-kind and the value is one of the indicated symbols,
> so, for example, the following might be a test result:
>
>    ((test-kind . PASS) (source-file . "foo.scm") (source-line . 13))

Correct.

(I notice that I'm inconsistent about whether result kinds are upper-case or
lower-case, which makes a difference in case-sensitive Schemes.  Oops.)
--
	--Per Bothner
xxxxxx@bothner.com   http://per.bothner.com/