Gabor Szabo wrote:
> With prove I can say
>
> prove --exec "$ENV{PARROT_DIR}/parrot
> $ENV{PARROT_DIR}/languages/rakudo/perl6.pbc" t/01.t
>
> and it will run
>
> $ENV{PARROT_DIR}/parrot $ENV{PARROT_DIR}/languages/rakudo/perl6.pbc t/01.t
>
> how can I achieve the same thing with "make test" or "Build test" ?
You'll get the most control, and the least headaches, if you just override the
test target. Even if you can hack Test::Harness into running Rakudo it has so
many built in Perl5-isms that it'll keep biting you all down the line.
In Module::Build it's simple, override ACTION_test().
sub ACTION_test {
my $self = shift;
$self->depends_on('code');
my $tests = $self->find_test_files;
# XXX Throw in a check that PARROT_DIR is set
my $parrot = "$ENV{PARROT_DIR}/parrot";
my $rakudo = "$ENV{PARROT_DIR}/languages/rakudo/perl6.pbc";
# XXX Throw in some checks that the above actually exists.
system("prove", "--exec", "$parrot $rakudo", @$tests);
return $? == 0 ? 1 : 0;
}
I believe you can avoid the override and set the "use_tap_harness" property
and then just feed TAP::Harness arguments (which are very much like prove's)
in with "tap_harness_args".
In MakeMaker you override test_via_harness().
package MY;
sub test_via_harness {
my($self, $perl, $tests) = @_;
# XXX Throw in a check that PARROT_DIR is set
my $parrot = "$ENV{PARROT_DIR}/parrot";
my $rakudo = "$ENV{PARROT_DIR}/languages/rakudo/perl6.pbc";
# XXX Throw in some checks that the above actually exists.
my $command = $self->quote_literal("$parrot $rakudo");
return qq[\tprove --exec $command @$tests];
}
--
Life is like a sewer - what you get out of it depends on what you put into it.
- Tom Lehrer