Piers Cawley ([EMAIL PROTECTED]) wrote:
> So, I'm messing around with stuff and I got bored of writing out all
> that guff in the various foo.t type tests and came up with something
> that'll let me do:
>
> foo.t
>
> use Test::Unit::TestMaker qw/Some::Test::Class/;
>
> run_tests;
>
> Which is somewhat pleasant.
Why not
use Some::Test::Class;
Some::Test::Class->run();
?
Is Some::Test::Class supposed to be a TestSuite or a TestCase?
If it's a TestCase, you can already do that. Well almost. Firstly,
it doesn't work because of a missing use in TestCase (which I just
fixed), and secondly, the result object doesn't have any listeners.
Hmm :-)
If it's a TestSuite, you can't, and this is because when you write a
TestSuite, it doesn't inherit from T::U::TestSuite. This seems rather
nonsensical to me, and has already proved to be a PITA with some
extensions I've been hacking on. For the curious, this was because I
wanted to know the classname of the suite, but because it was blessed
into T::U::TestSuite and then built via the suite() method, I had to
add an extra _Class key to the object when it was constructed. If
inheritance had taken its natural course, I could have just looked at
ref($suite).
So, I propose we ditch this
package My::TestSuites::Foo;
sub suite {
my $class = shift;
my $suite = Test::Unit::TestSuite->empty_new('name of suite');
use My::TestSuites::Bar;
$suite->add_test(My::TestSuites::Bar->suite());
return $suite;
}
in favour of
package My::TestSuites::Foo;
use base qw(Test::Unit::TestSuite);
sub name { 'name of suite' }
sub subsuites { qw(My::TestSuites::Bar) }
which is a hell of a lot easier to read, write, and implement the
framework for. Have I missed reasons against?
> Of course, it'd be nice if I could do:
>
> use Test::Unit::TestMaker
> 'Some::Test::Class' => {filter => qr/^test_},
> 'Some::Other::Test::Class' => {filter => qr/^test[A-Z]/,
> todo => [qw(testNonExistentFeature)]},
> ;
>
> run_tests;
Now you're getting very close to stuff I've already done. Did you
take a look at my runner state patch? Noone seems to have commented
on it yet :-(
> But that might be running before I can walk. (The 'todo' thing could
> be a tad tricky to implement. Requires holding state somewhere,
> probably in the runner.)
Where have I heard that before ...
> Test::Harness also allows you to 'skip' certain tests depending on features
> of the environment you're testing in (or possibly on whether some
> other test succeeded or not, but doing test dependencies with
> unordered tests seems, er, courageous)
... and that :-)
If you missed my patch, drop me a line and I'll send you another copy.
_______________________________________________
Perlunit-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/perlunit-devel