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.