Hi!

And what particular pragma did you invent, when is it generated, how
does it influence the TAP parsing with the particular "MySQL
unavailable" isse?

Thanks.

Kind regards,
Steffen

"Nathan (Nat) Goodman" <ngood...@systemsbiology.org> writes:
> Hi Steffen
>
> TAP as you probably know is a line-oriented protocol whose main purpose it to 
> let test scripts communicate pass/fail results to a test harness.  Functions 
> like 'ok' or 'pass' or 'fail' in Test::More print lines that tell the harness 
> whether a test passed or failed. 
>
> The main TAP site is http://testanything.org/.  The TAP specification is at 
> http://podwiki.hexten.net/TAP/TAP.html?page=TAP
>
> I learned about TAP pragmas by reading the TAP CPAN documentation and code, 
> esp. TAP::Parser , 
> http://search.cpan.org/~ovid/Test-Harness-3.28/lib/TAP/Parser.pm#pragmas
>
> To make it work you have to tell the TAP harness that you're using TAP 
> version 13, whose specification is at 
> http://podwiki.hexten.net/TAP/TAP13.html?page=TAP13
>
> You do this from a test script  by printing this line  
>       TAP version 13
>
> The format of a pragma is     pragma +/-<whatever>, eg,
>       pragma +strict
>
> The + or - is mandatory!
>
> To process a non-standard pragma, you have to customize some aspect of the 
> test harness.  I did this by creating a subclass of Module::Build which I 
> needed for other purposes anyway.  The subclass is in the Data::Babel 1.12 
> distribution, file t/Build.pm.  You also have to tell the main Build driver 
> to use the subclass.  This is in Build.PL; the relevant few lines of code are 
> near the top
>
>       use lib qw(t);
>       use t::Build;                   # my Module::Build subclass
>       my $class='t::Build';
>
> followed a few lines later by 
>
>       my $builder = $class->new
>       ....
>
> I hope this helps.  Feel free to ask for further clarification as necessary.  
> I'm glad to help. 
>
> Best,
> Nat
>
> On Aug 6, 2013, at 3:51 AM, Steffen Schwigon wrote:
>
>> "Nathan (Nat) Goodman" <ngood...@systemsbiology.org> writes:
>>> 3) What I ended up doing with Data::Babel (and will do with
>>> Class:AutoDB soon) is to move the check for MySQL into a test script
>>> that runs first. If the script detects that MySQL is unavailable, it
>>> reports this to the test driver using the pragma capability of TAP
>>> version 13, and a slightly customized version of
>>> Build::run_tap_harness (included in my distribution) breaks out of the
>>> test suite when it sees this pragma, reporting PASS as the outcome.
>> 
>> Can you please elaborate more on the details of your pragma solution. 
>> 
>> I never saw a TAP pragma in real world[1] and would love to understand
>> it - without reading into your code, sorry for that laziness... :-)
>> 
>> Kind regards,
>> Steffen
>> 
>> Footnotes: 
>> [1]  except that I support highlighting it in Emacs TAP mode
>> -- 
>> Steffen Schwigon <s...@renormalist.net>
>

-- 
Steffen Schwigon <s...@renormalist.net>

Reply via email to