On Jul 11, 2006, at 7:34 AM, Ian Langworth wrote:

Maybe we don't care. Maybe we can simply add a callback for some
diagnostic_block_analyzer() and, in my own little happy world,

 $parser->diagnostic_block_analyzer( sub {
   my ($block) = @_;
   if ($block =~ m{ \A --- }xs) {
     do something with YAML::Load($block);
   }
   else {
     do something else
   }
 });

If you merge this together with Ovid's proposal, I like it fine. We have some arbitrary associated chunk of data - format user-defined - that follows the ok/not ok; if there's a callback supplied to do something with it, fine; otherwise it's opaque to TAP and we don't care. Delimiting it visually somehow is probably a good idea.

This is, I think, a place where "stupid is better" wins, The TAP parser is less complex, which makes it more reasonable to assume that other languages/platforms will implement it, and the diagnostic info becomes extremely flexible as to what it contains because it's essentially unparsed arbitrary data. In an extreme case, it's' arbitrary binary data: this is the PNG that the program generated. If you *want* YAML, or MIME headers, or whatever, they're permissible, as long as the data follows the basic "this is diag data" standard.. A data generator/parser plugin plugs in to the TAP parser: the generator side encodes diagnostic data in the manner the parser side will understand. This becomes testable as a separate unitm and allows anyone to extend TAP in whatever direction they like.

We could go REALLY stupid: the plugin gets a lookin first at each "item" in the TAP data stream and decides if the TAP parser should see it at all; then you have no limit whatsoever on the data format, as long as the plugin can parse it.

 --- Joe M.

Reply via email to