Those of you who were/are at the YAPC Hackathon might know, I've begun
work on what started as Test::Harness 3 and is now TAP::Harness.  This
is brand new, ground up rewrite of the idea of a harness for TAP
sources (a foo.t file is a TAP source).  Its being designed to be
extendable to handle all the things we'd like to do with Test::Harness
over the last few years without having to worry about backwards
compat.

The design is currently a pile of sticky notes attached to my laptop
and a little bit of code.  chromatic, Andy, Adam Kennedy, Helen Cook
and myself have been working on it here at the YAPC hackathon.  I will
post up a sketch of that design a bit later, I have to go get a plane
shortly.  For now, here's a PFAQ (Preemptive FAQ).


* Why call it TAP::Harness?

"TAP" focuses it on the fact that this is about the Test Anywhere
Protocol, not just Perl's testing stuff.  By not putting it in the
Test:: namespace I hope to draw a stronger line between the
responsibilities of things like Test::More (your test program) and
TAP::Harness (the thing which runs and interprets your test program).

"Harness" is a link with its forerunner, Test::Harness.


* What about Test::Harness?

Test::Harness remains its own thing.

At some point in the future Test::Harness will likely be gutted and
turned into a thin wrapper around TAP::Harness.  I'm not caring about
this right now.


* Is it going to use Test::Harness::Straps?

No.  I will be stealing lots of code from Straps, but I will not be
using Straps.  Straps has too many design flaws.  It tries to do too
many parts of the TAP processing.  It also doesn't do all the TAP
processing leaving the Straps user to do some of that.  And the
callback system doesn't work very well.


* Should I continue to work on Test::Harness?

Yes.  While I am optimistic, I make no promises as to when
TAP::Harness is going to be stable.  So keep working on Test::Harness,
keep using Test::Harness::Straps.


* Will TAP::Harness go into the core?

Probably at some point.  I don't care right now.


* Will I be able to do X with TAP::Harness?

The goal is to encompass the largest set of X.  Another goal is to
have the extender be able to focus on the display aspects and not the
TAP parsing.

Right now the use cases I have in mind include things such as
parallelized test runs, fancy GUI and HTML outputs (for example,
TAP::Model::HTMLMatrix), multiple, non-Perl TAP sources (ex. contact a
URL and get the TAP from that; run HTML through a validator which
produces TAP; run a C program which spits out TAP), "enhanced" TAP
output (ex. colors; levels of verbosity), and the ability to smoothly
handle TAP extensions.


* Will TAP::Harness include X extension to TAP?

No.  TAP::Harness is using the current TAP spec from
Test::Harness::TAP.  Extending TAP is another problem.


* Will I be able to test X (HTML, PHP, Javascript, Monkeys...) with
TAP::Harness?

Yes.  You will be able to write new "TAP source" plugins for whatever
you want.  As long as it winds up producing a stream of TAP at the
end.


* Where's the code?

svn.schwern.org.  There's not a whole lot there yet.


* How can I help?

Provide use cases, what would you want to do with Test::Harness if you
could?  What are you doing with Straps?  What features do other
testing systems (JUnit, for example) have that you'd like to see in
Perl?  Once I post the design, pick it to pieces.

Reply via email to