Meta-test suite
Donovan Kolbly
(09 Mar 2005 17:54 UTC)
|
Re: Meta-test suite
Per Bothner
(09 Mar 2005 19:19 UTC)
|
Re: Meta-test suite
Donovan Kolbly
(09 Mar 2005 20:19 UTC)
|
Re: Meta-test suite
Per Bothner
(09 Mar 2005 20:39 UTC)
|
Re: Meta-test suite Donovan Kolbly (09 Mar 2005 21:21 UTC)
|
Re: Meta-test suite
Per Bothner
(09 Mar 2005 21:39 UTC)
|
Counting [was Re: Meta-test suite]
Donovan Kolbly
(10 Mar 2005 15:02 UTC)
|
Re: Meta-test suite
Per Bothner
(09 Mar 2005 20:41 UTC)
|
Re: Meta-test suite
Donovan Kolbly
(09 Mar 2005 20:54 UTC)
|
On Wed, 9 Mar 2005, Per Bothner wrote: > Donovan Kolbly wrote: > > > More crucially, there does not seem to be any way for a portable runner to > > keep track of the nesting of test suites. > > The API should probably have a way to get the value of (test-runner-group-path). > One detail: the latter has the suite-names in reverse order, since the > implementation uses a stack; a public function should probably return the > names in top-to-botton order. That's a minor tweak. So that, suppose: (test-begin "a") (test-begin "b") (test-assert "x" #t) then in an on-test hook executing for the test-assert, we have: (test-runner-test-name runner) ==> "x" (test-runner-group-path runner) ==> ("a" "b") That seems reasonable. Although, then a custom runner would have no way to know about an empty group. Would you intend that, for a custom runner, the following are indistinguishable: (test-begin "a") (test-assert "x" #t) (test-end) (test-begin "a") (test-assert "y" #t) (test-end) vs: (test-begin "a") (test-assert "x" #t) (test-assert "y" #t) (test-end) My tendency goes more to object identity, but I doubt it matters much here. > > > I'm not sure yet what to > > suggest for SRFI-64 to track suite nesting, but something along the lines > > of a `test-runner-on-suite-begin!' and `test-runner-on-suite-end!' would > > probably do it (*). > > That might be useful for some things, though I don't think it should be needed > to keep track of the "group-path", which the framework should do. > > > [*] do you want to call these things "suites" or "groups"? The > > terminology seems to vary from place to place, or am I still missing > > something.... > > Hm. I think a "test suite" is a collection of tests, which consists of > individualt "test cases", which are usually grouped into "test groups". > A test-begin/test-end-pair together with whatever's between them is an > implicit/informal test group, while a test-group is an explicit test group. > > A test suite is whatever gets run user a test runner. > > Does that sound reasonable? If so, "suite-name" should be "group-name". Sounds good. To say it another way: A "test suite" is a collection of "test cases" optionally organized into a hierarchy of "test groups". A "test group" may be either implict, as introduced by test-begin and terminated by test-end, or explicit, as introduced by test-group. Furthermore, note that the tests within an explicit test group may be skipped using test-skip, but this is not true for tests within an implicit test group. [I think it's wierd that you can't skip an implicit test group, just for symmetry. Although I can't see implementing it so that all the forms are skipped, it might make sense to actually skip *tests* inside a skippable implicit group.] For the purposes of test counting as checked by test-end, a test group (of either variety) counts as a single test. Note that the registered on-test procedure is not involved in test group boundaries, which means that the sum of (test-runner-*-count) may be larger than the number of calls to the on-test procedure. Furthermore, if an explicit test group is skipped, the group as a whole is skipped, not each test within it, which means that (test-runner-skip-count) may be *smaller* than if the tests were individually skipped. -- -- Donovan Kolbly ( xxxxxx@rscheme.org ( http://www.rscheme.org/~donovan/