--- Julien Beasley <[EMAIL PROTECTED]> wrote: > I'm trying to get my project to move to TAP -- we have some perl test > files > and some C++ test files. Let's say I have 2 files: test.pl, and > test.exe, > the former is a perl program and the latter is a compiled program > that > outputs TAP. > > How do I use TAPx::Harness to run them both? I'm not really sure how > to use > the 'exec' switch for a program that doesn't require an interpreter > :)
I need to write a tutorial on how to do this, to be honest. It's one of the more advanced features, but it's pretty easy. First, here's a tiny C++ program with a deliberately failing test: #include <iostream> int main() { std::cout << "1..3\n"; std::cout << "ok 1 whoopee!\n"; std::cout << "not ok 2 :(\n"; std::cout << "not ok 3 # TODO some test\n"; } Compile it and move it to the test directory: g++ tap.cpp -otap.exe && mv tap.exe t/ Also in that test directory is this Perl program: #!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; ok 1, 'first test'; ok 2, 'second test'; To run the C++, you have create a "driver script" (don't forget to make it executable): $ cat bin/run.pl #!/usr/bin/perl use strict; use warnings; my $prog = shift; unless ( -e $prog && -x _ ) { die "Cannot find or execute ($prog)"; } exec $prog; This script doesn't need to be elaborate, it just needs to spit out TAP (see the TAPx::Parser examples/ directory for an example which spits out TAP for URLs) Then you need an 'execrc' file. This is written in YAML: code $ cat my_execrc --- tests: # this is the default for all files - - /usr/bin/perl - -wT - * # Here's how we run the c++ - - bin/run.pl - t/tap.exe And here's how to run your Perl and C++ tests at the same time: $ runtests --execrc my_execrc t/* t/perl.......ok t/tap........ Failed 1/3 subtests Test Summary Report ------------------- t/tap.exe (Wstat: 0 Tests: 3 Failed: 1) Failed tests: 2 Files=2, Tests=5, 0 wallclock secs ( 0.04 cusr + 0.00 csys = 0.04 CPU) Note that the format of the execrc file is likely to change in the future. You also probably want the latest development version of TAPx::Parser on the CPAN. Cheers, Ovid -- Buy the book -- http://www.oreilly.com/catalog/perlhks/ Perl and CGI -- http://users.easystreet.com/ovid/cgi_course/