# New Ticket Created by Bernhard Schmalhofer # Please include the string: [perl #48226] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=48226 >
Hi, when trying to convert languages/eclectus/t/harnes to Parrot::Test::Harness, I found that P::T::H did not pass the 'exec' option to TAP::Harness. So I added the 'exec' option, and removed the probably obsolete '--gc-debug' hack. Things look fine on 'Kunbuntu 7.10' with Perl 5.8.8 and Test::Harness 3.04. Could sombody test-savy have a second look at this patch? 'petite' is available at http://www.scheme.com/petitechezscheme.html Regards, Bernhard
Index: lib/Parrot/Test/Harness.pm =================================================================== --- lib/Parrot/Test/Harness.pm (Revision 23505) +++ lib/Parrot/Test/Harness.pm (Arbeitskopie) @@ -7,8 +7,8 @@ =head1 SYNOPSIS -Tell the harness which language (and optionally, compiler) you want to use in a -file called F<t/harness>: +Tell the harness which language, and optionally compiler or other executable, +you want to use in a file called F<t/harness>: use Parrot::Test::Harness language => 'punie'; @@ -16,20 +16,30 @@ use Parrot::Test::Harness language => 'perl6', compiler => 'perl6.pbc'; -That's it. Seriously. + # or + use Parrot::Test::Harness language => 'perl6', compiler => 'perl6.pbc'; + + # or + + use Parrot::Test::Harness language => 'eclectus', exec => [ 'petite', '--script' ]; + +That's it. Seriously. + =head1 DESCRIPTION -This module provides a basic test harness for Parrot-hosted languages. Right -now it parameterizes the two parameters that at least three language +This module provides a basic test harness for Parrot-hosted languages. Right +now it parameterizes the three parameters that at least four language implementations need. If you really want, you can pass a third option to the C<use> line. C<arguments> should be an array reference containing additional arguments (as you might find on the command line). -If you don't pass a C<compiler> argument pair, the harness will run the tests -with C<perl>. If you I<do> pass the pair, the harness will run the tests with +If you don't pass a C<compiler> or C<exec> argument pair, the harness will run the tests +with C<perl>. If you I<do> pass one of these pairs, the harness can use another executable. +For C<exec> a reference to a an array of string is expected. +For C<compiler> the harness will run the tests with C<parrot>, calling the C<compiler> file as the first argument. This means that you can write your tests in your language itself and run them @@ -38,7 +48,7 @@ =head1 AUTHOR -written by chromatic with most of the intelligence stolen from the Punie +Written by chromatic with most of the intelligence stolen from the Punie harness and most of that probably stolen from Test::Harness Please send patches and bug reports via Parrot's RT queue or to the mailing @@ -58,13 +68,14 @@ sub set_flags { my %options = @_; $ENV{HARNESS_VERBOSE} = 1; - $ENV{HARNESS_PERL} ||= '../../parrot ./' . $options{compiler} - if $options{compiler}; + if ( $options{exec} ) { + $ENV{HARNESS_PERL} ||= join q{ }, @{$options{exec}}; + } + elsif ( $options{compiler} ) { + $ENV{HARNESS_PERL} ||= join q{}, "../../parrot ./$options{compiler}"; + } - # Per Leo on 18APR2005, run the test suite with --gc-debug - if ( $ENV{TEST_PROG_ARGS} && $ENV{TEST_PROG_ARGS} !~ /\b--gc-debug\b/ ) { - $ENV{TEST_PROG_ARGS} .= " --gc-debug"; - } + return; } sub get_files { @@ -123,11 +134,12 @@ exit unless my @files = get_files(%options); if (eval { require TAP::Harness; 1 }) { - my %options = $options{compiler} - ? ( exec => [ '../../parrot', './' . $options{compiler} ] ) - : (); - my $harness = TAP::Harness->new( \%options ); - $harness->runtests( @files ); + my %options = + $options{exec} ? ( exec => $options{exec} ) + : $options{compiler} ? ( exec => [ '../../parrot', './' . $options{compiler} ] ) + : (); + TAP::Harness->new( \%options )->runtests( @files ); + return; } Index: languages/eclectus/t/harness =================================================================== --- languages/eclectus/t/harness (Revision 23505) +++ languages/eclectus/t/harness (Arbeitskopie) @@ -2,7 +2,7 @@ =head1 NAME -languages/eclectus/t/harness - A harness for scheme +languages/eclectus/t/harness - A harness for Eclectus =head1 SYNOPSIS @@ -20,19 +20,12 @@ use strict; use warnings; use 5.008; +use lib qw( ../lib ../../lib ../../lib ); -use TAP::Harness (); -use File::Spec; +use Parrot::Test::Harness language => 'eclectus', exec => [ 'petite', '--script' ]; -my @test_files = glob( File::Spec->catfile( 't', '*.t' ) ); - -TAP::Harness->new( - { exec => [ 'petite', '--script' ], - } -)->runtests(@test_files); - =head1 SEE ALSO - F<languages/scheme/t/harness> + F<languages/perl6/t/harness> =cut