Andy Armstrong wrote:
>> Its not either / or.  They're complimentary.  Most test failure
>> diagnostics
>> are going to be structured and use structured YAML diagnostics.  But
>> sometimes
>> you just need to print a line of text.  And outputting a full blown YAML
>> document for that is visual overkill.  For that there's the logging
>> syntax.
> 
> Ah. Penny drops. Thanks.

Oh good, I'm glad that's cleared up.


>> Oh, that's easy.
>>
>>   is( 23, 42, { foo => "bar", name => "is 23 42?" });
>>
>> If the "name" argument is a hash ref we interpret it instead as extra
>> diagnostics.
> 
> That's OK in the simple case but you might want to see if the test
> failed and then do some work to build the diagnostic data. So you'd have
> to optionally be able to
> 
>   is ( 23, 42 );
>   my $info = { foo => "bar", name => "is 23 42?" };
>   details( $info );

Ahh, the ok() or diag() case.  Currently expressed like so:

    ok( open FILE, $filename ) or diag("Can't open $filename: $!");

In the producer it can be as simple as having a function which is defined to
spit out structured diagnostics associated with the last test.

In the TAP stream the association between a block of YAML and a particular
test could be made explicit by putting the test number in the block.

    not ok 5
      ---
      test: 5
      got: 23
      expected: 42
      ...

This would be optional.  How's that?


>> The TAP parser simply starts at /^\s+---\s*$/ and ends at either
>> /^\s+...\s*$/
>> or the next test line.  This means the TAP parser needs no knowledge
>> of YAML,
>> just the start and end of document delimiters.  It also allows the TAP
>> parser
>> to pass a complete document to the YAML parser, the YAML parser does
>> not have
>> to stream.  Means you can use most off-the-shelf YAML parsers.
> 
> I think it's worthwhile to define the subset of YAML that we expect to
> see. If you just say it's YAML then potentially you're requiring the
> baggage of a hugely complex parser.

OTOH someone else has already written that hugely complex parser... well,
unfortunately in the case of YAML that might not be true.

This I would like to shelve the discussion of what subset of YAML to use for
the moment if you don't mind, until we've worked out all this other
surrounding detail.  I feel it will be another long process.

Reply via email to