summaryrefslogtreecommitdiff
path: root/t/harness
diff options
context:
space:
mode:
authorVincent Pit <perl@profvince.com>2009-08-31 19:01:50 +0200
committerVincent Pit <perl@profvince.com>2009-08-31 19:01:50 +0200
commit4013a0e1f891d6d7f41d456bab1a516334fddad8 (patch)
tree6be00e91366b486a6ebdc259765791727339698c /t/harness
parent79b01a68c72bb52b3469bd03bbe6d75bd93c9400 (diff)
downloadperl-4013a0e1f891d6d7f41d456bab1a516334fddad8.tar.gz
Adapt harness to the new TEST infrastructure
The new harness gathers the test options by calling _scan_test() and _cmd() in the exec callback and, if needed, chdirs into the right ext/ subdirectory in a parser_args callback and back to t/ when the parser is made.
Diffstat (limited to 't/harness')
-rw-r--r--t/harness35
1 files changed, 32 insertions, 3 deletions
diff --git a/t/harness b/t/harness
index 17a6ffba55..51de53a00b 100644
--- a/t/harness
+++ b/t/harness
@@ -201,12 +201,29 @@ if ($^O eq 'MSWin32') {
@tests=grep /$re/, @tests
if $re;
+my %options;
+
+my $type = 'perl';
+
+# Load TAP::Parser now as otherwise it could be required in the short time span
+# in which the harness process chdirs into ext/Dist
+require TAP::Parser;
+
my $h = TAP::Harness->new({
rules => $rules,
color => $color,
jobs => $jobs,
verbosity => $Verbose,
- exec => \&_run_test,
+ exec => sub {
+ my ($harness, $test) = @_;
+
+ my $options = $options{$test};
+ if (!defined $options) {
+ $options = $options{$test} = _scan_test($test, $type);
+ }
+
+ return [ split ' ', _cmd($options, $type) ];
+ },
});
if ($state) {
@@ -224,9 +241,21 @@ if ($state) {
$h->callback(
parser_args => sub {
- my ( $args, $test ) = @_;
- push @{ $args->{switches} }, '-I../lib';
+ my ($args, $job) = @_;
+ my $test = $job->[0];
+ _before_fork($options{$test});
+ push @{ $args->{switches} }, "-I../../lib";
}
);
+
+$h->callback(
+ made_parser => sub {
+ my ($parser, $job) = @_;
+ my $test = $job->[0];
+ my $options = delete $options{$test};
+ _after_fork($options);
+ }
+ );
+
$h->runtests(@tests);
exit(0);