On Fri, 6 Feb 2004 13:34:01 -0800, Michael G Schwern wrote:
>
> Test::Harness parses 'ok' and 'not ok' and 'Bail out'... Test::*
> modules produce the output Test::Harness parses. So your extra logic
> to parse "depends on" would go into your Test::Harness extension, but
> the depends_on() function to produce it would go into a seperate
> Test::* module.
I agree, but I still believe it would be good if Test::Harness
laid out syntax rules for extensions. Defining a standard
for how test <-> harness communication is done will avoid
accidental parsing of test output.
Let me summarize what I've done as an example.
On the test side of things each of my test files now have one
additional line. For example:
use Test::More tests => N;
use Test::Depends qw(:auto);
That :auto import ensures that %INC dependencies are inserted
into the test output stream automatically when the test exits.
Explicit calls to depends_on(...) are allowed too, but not
required.
On the harness end of things I used Test::Harness::Straps to
create Test::Continuous::reruntests(). The callback function
knows what the Test::Depends code will insert into the test
output stream and parses it appropriately.
The hazard I see is the messages generated by T::Depends and
parsed by T::Continuous are completely up to me. A test writer
might inadvertently generate their own diagnostic messages that
T::Continuous mistakenly parses.
With a nod towards SMTP header extensions (e.g.
"X-Mail-Software: ...", "X-URL: ...", or "X-Server: ...") I'll
suggest "# Test-X-FOO: ..." as a base syntax.
The T::H documentation sections "The test script output" or
"Anything else" could state that comments starting with
"Test-X-\w+:" are used for test extensions. Then my T::Depends
extension would use the pattern /^# Test-X-Depends: (.*)/
safely.
Comments?
Scott