--- Michael G Schwern <[EMAIL PROTECTED]> wrote:

> This is easier to do with Test::Builder because custom features meant
> custom
> functions.  Custom functions avoid functionality overlap and users
> write code
> specifically for them.  Test::Harness and prove have no such luxury.

Right, let's think about this.  Test::Harness features tend to impact
an *entire* test suite and that can be a hard problem to solve.  What
does it mean if someone says they want a GUI and colored test results? 
Those aren't really the same thing and they could very well try to hook
into the same functions.  If you can write code which intelligently
decides the *intent* of potentially conflicting plugins, you'll have
code which can pass the Turing test.  We've had several false starts on
this and we decided to focus on those things we can really solve and
understand.  When people start writing more and more stuff around
Test::Harness, then we might have a better understanding of what the
real world needs are.

Further, many people have many different needs for a test suite. 
Test::Builder essentially gets to limit itself to printing "yes" or
"no", over and over again.  So far it's been a one-size-fits-all suit. 
Sure, you can write your own testing module, but you're still just
printing "yes" or "no".  I don't think it's really fair to take the new
Test::Harness to task for not having immediately solved a far more
difficult problem.

Side note:  those features I really want control over in Test::Harness
are the plan() and ok() methods.  There's no clean way for me to do
that.  Just look at the constructor:

  my $Test = Test::Builder->new;
  sub new {
      my($class) = shift;
      $Test ||= $class->create;
      return $Test;
  }

The class name is hard-coded in there.  And look at how much the plan()
method does!  Sure, it's all logically related to the plan, but if I
want to customize it, I potentially have to duplicate an awful lot of
code (which I had to do with Test::Aggregate).
 
> How do you do this without balkanizing TAP::Parser into a bazillion
> mutually
> exclusive subclasses?  Something like App::ProvePlus is right out,
> it's just shifting the dumping ground.

I suspect we need a minimal subset of traits (Class::Trait::Lite?)
which can be bundled with Test::Harness.

Cheers,
Ovid

--
Buy the book  - http://www.oreilly.com/catalog/perlhks/
Perl and CGI  - http://users.easystreet.com/ovid/cgi_course/
Personal blog - http://publius-ovidius.livejournal.com/
Tech blog     - http://use.perl.org/~Ovid/journal/

Reply via email to