},
'Test::Harness' => {
- 'DISTRIBUTION' => 'OVID/Test-Harness-3.29.tar.gz',
+ 'DISTRIBUTION' => 'LEONT/Test-Harness-3.30.tar.gz',
'FILES' => q[cpan/Test-Harness],
'EXCLUDED' => [
qr{^examples/},
=head2 Colored Test Output
-Colored test output is the default, but if output is not to a
-terminal, color is disabled. You can override this by adding the
-C<--color> switch.
+Colored test output using L<TAP::Formatter::Color> is the default, but
+if output is not to a terminal, color is disabled. You can override this by
+adding the C<--color> switch.
Color support requires L<Term::ANSIColor> on Unix-like platforms and
-L<Win32::Console> windows. If the necessary module is not installed
+L<Win32::Console> on windows. If the necessary module is not installed
colored output will not be available.
=head2 Exit Code
The most practical use is likely to specify that some tests are not
"parallel-ready". Since mentioning a file with --rules doesn't cause it to
-selected to run as a test, you can "set and forget" some rules preferences in
+be selected to run as a test, you can "set and forget" some rules preferences in
your .proverc file. Then you'll be able to take maximum advantage of the
performance benefits of parallel testing, while some exceptions are still run
in parallel.
=item * The existence of a rule does not imply selecting a test. You must still specify the tests to run.
-=item * Specifying a rule to allow tests to run in parallel does not make the run in parallel. You still need specify the number of parallel C<jobs> in your Harness object.
+=item * Specifying a rule to allow tests to run in parallel does not make them run in parallel. You still need specify the number of parallel C<jobs> in your Harness object.
=back
{foo,bar,baz} is any of foo, bar or baz.
\ is an escape character
-=head3 More advance specifications for parallel vs sequence run rules
+=head3 More advanced specifications for parallel vs sequence run rules
If you need more advanced management of what runs in parallel vs in sequence, see
the associated 'rules' documentation in L<TAP::Harness> and L<TAP::Parser::Scheduler>.
use App::Prove::State;
use Carp;
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use App::Prove::State::Result;
use TAP::Parser::YAMLish::Reader ();
use TAP::Parser::YAMLish::Writer ();
-use parent 'TAP::Base';
+use base 'TAP::Base';
BEGIN {
__PACKAGE__->mk_methods('result_class');
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
use constant GOT_TIME_HIRES => do {
eval 'use Time::HiRes qw(time);';
package TAP::Whatever;
- use parent 'TAP::Base';
+ use base 'TAP::Base';
# ... later ...
use strict;
use warnings;
-use parent 'TAP::Base';
+use base 'TAP::Base';
use POSIX qw(strftime);
my $MAX_ERRORS = 5;
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
-use parent 'TAP::Object';
+use base 'TAP::Object';
my $NO_COLOR;
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Formatter::Base';
+use base 'TAP::Formatter::Base';
use POSIX qw(strftime);
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use File::Path;
use Carp;
-use parent 'TAP::Formatter::Console::Session';
+use base 'TAP::Formatter::Console::Session';
use constant WIDTH => 72; # Because Eric says
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Formatter::Session';
+use base 'TAP::Formatter::Session';
my @ACCESSOR;
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use TAP::Formatter::File::Session;
use POSIX qw(strftime);
-use parent 'TAP::Formatter::Base';
+use base 'TAP::Formatter::Base';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Formatter::Session';
+use base 'TAP::Formatter::Session';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Base';
+use base 'TAP::Base';
my @ACCESSOR;
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 METHODS
use File::Path;
use IO::Handle;
-use parent 'TAP::Base';
+use base 'TAP::Base';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
$ENV{HARNESS_ACTIVE} = 1;
$ENV{HARNESS_VERSION} = $VERSION;
=head1 NAME
-Test::Harness - Beyond make test
+Test::Harness::Beyond - Beyond make test
=head1 Beyond make test
package My::TAP::Harness;
- use parent 'TAP::Harness';
+ use base 'TAP::Harness';
use YAML;
sub summary {
use TAP::Object;
use Text::ParseWords qw/shellwords/;
-our $VERSION = '3.29';
+our $VERSION = '3.30';
# Get the parts of @INC which are changed from the stock list AND
# preserve reordering of stock directories.
=head1 VERSION
-Version 3.29
+Version 3.30
=head1 SYNOPSIS
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
- use parent 'TAP::Object';
+ use base 'TAP::Object';
# new() implementation by TAP::Object
sub _initialize {
use Carp qw( confess );
-use parent 'TAP::Base';
+use base 'TAP::Base';
=encoding utf8
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
my $DEFAULT_TAP_VERSION = 12;
my $MAX_TAP_VERSION = 13;
use warnings;
use Benchmark;
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use TAP::Parser::ResultFactory ();
use TAP::Parser::YAMLish::Reader ();
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
use warnings;
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
# to subclass:
use TAP::Parser::Iterator ();
- use parent 'TAP::Parser::Iterator';
+ use base 'TAP::Parser::Iterator';
sub _initialize {
# see TAP::Object...
}
use strict;
use warnings;
-use parent 'TAP::Parser::Iterator';
+use base 'TAP::Parser::Iterator';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use Config;
use IO::Handle;
-use parent 'TAP::Parser::Iterator';
+use base 'TAP::Parser::Iterator';
my $IS_WIN32 = ( $^O =~ /^(MS)?Win32$/ );
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
};
die "Could not execute (@command): $@" if $@;
if ( $] >= 5.006 ) {
-
- # Kludge to avoid warning under 5.5
- eval 'binmode($out, ":crlf")';
+ binmode($out, ":crlf");
}
}
else {
use strict;
use warnings;
-use parent 'TAP::Parser::Iterator';
+use base 'TAP::Parser::Iterator';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use Carp qw( confess );
use File::Basename qw( fileparse );
-use parent 'TAP::Object';
+use base 'TAP::Object';
use constant handlers => [];
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
- use parent 'TAP::Parser::IteratorFactory';
+ use base 'TAP::Parser::IteratorFactory';
# override source detection algorithm
sub detect_source {
use IO::Select;
-use parent 'TAP::Object';
+use base 'TAP::Object';
use constant IS_WIN32 => $^O =~ /^(MS)?Win32$/;
use constant IS_VMS => $^O eq 'VMS';
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
use warnings;
-use parent 'TAP::Object';
+use base 'TAP::Object';
BEGIN {
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
- use parent 'TAP::Parser::Result';
+ use base 'TAP::Parser::Result';
# register with the factory:
TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use strict;
use warnings;
-use parent 'TAP::Parser::Result';
+use base 'TAP::Parser::Result';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 DESCRIPTION
use TAP::Parser::Result::Version ();
use TAP::Parser::Result::YAML ();
-use parent 'TAP::Object';
+use base 'TAP::Object';
##############################################################################
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head2 DESCRIPTION
# create a custom result type:
package MyResult;
use strict;
- use parent 'TAP::Parser::Result';
+ use base 'TAP::Parser::Result';
# register with the factory:
TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );
use MyResult;
- use parent 'TAP::Parser::ResultFactory';
+ use base 'TAP::Parser::ResultFactory';
# force all results to be 'MyResult'
sub class_for {
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use warnings;
use File::Basename qw( fileparse );
-use parent 'TAP::Object';
+use base 'TAP::Object';
use constant BLK_SIZE => 512;
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
open my $fh, '<', $file or die "Can't read $file: $!\n";
# Might be a binary file - so read a fixed number of bytes.
- my $got = read $fh, my $buf, BLK_SIZE;
+ my $got = read $fh, my ($buf), BLK_SIZE;
defined $got or die "I/O error: $!\n";
return $1 if $buf =~ /(.*)/;
return;
use warnings;
use TAP::Parser::Iterator ();
-use parent 'TAP::Object';
+use base 'TAP::Object';
=head1 NAME
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
# must be sub-classed for use
package MySourceHandler;
- use parent 'TAP::Parser::SourceHandler';
+ use base 'TAP::Parser::SourceHandler';
sub can_handle { return $confidence_level }
sub make_iterator { return $iterator }
use MySourceHandler; # see TAP::Parser::SourceHandler
use TAP::Parser::IteratorFactory;
- use parent 'TAP::Parser::SourceHandler';
+ use base 'TAP::Parser::SourceHandler';
TAP::Parser::IteratorFactory->register_handler( __PACKAGE__ );
use TAP::Parser::IteratorFactory ();
use TAP::Parser::Iterator::Process ();
-use parent 'TAP::Parser::SourceHandler';
+use base 'TAP::Parser::SourceHandler';
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use Carp qw( croak );
use TAP::Parser::SourceHandler::Executable;
- use parent 'TAP::Parser::SourceHandler::Executable';
+ use base 'TAP::Parser::SourceHandler::Executable';
# expect $handler->(['mytest.rb', 'cmdline', 'args']);
sub make_iterator {
use TAP::Parser::IteratorFactory ();
use TAP::Parser::Iterator::Stream ();
-use parent 'TAP::Parser::SourceHandler';
+use base 'TAP::Parser::SourceHandler';
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use TAP::Parser::IteratorFactory ();
use TAP::Parser::Iterator::Stream ();
-use parent 'TAP::Parser::SourceHandler';
+use base 'TAP::Parser::SourceHandler';
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use TAP::Parser::Iterator::Process ();
use Text::ParseWords qw(shellwords);
-use parent 'TAP::Parser::SourceHandler::Executable';
+use base 'TAP::Parser::SourceHandler::Executable';
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use TAP::Parser::SourceHandler::Perl;
- use parent 'TAP::Parser::SourceHandler::Perl';
+ use base 'TAP::Parser::SourceHandler::Perl';
# use the version of perl from the shebang line in the test file
sub get_perl {
use TAP::Parser::IteratorFactory ();
use TAP::Parser::Iterator::Array ();
-use parent 'TAP::Parser::SourceHandler';
+use base 'TAP::Parser::SourceHandler';
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
=head1 SYNOPSIS
use strict;
use warnings;
-use parent 'TAP::Object';
+use base 'TAP::Object';
-our $VERSION = '3.29';
+our $VERSION = '3.30';
# TODO:
# Handle blessed object syntax
=head1 VERSION
-Version 3.29
+Version 3.30
=head1 SYNOPSIS
use strict;
use warnings;
-use parent 'TAP::Object';
+use base 'TAP::Object';
-our $VERSION = '3.29';
+our $VERSION = '3.30';
my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x;
my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x;
=head1 VERSION
-Version 3.29
+Version 3.30
=head1 SYNOPSIS
use Text::ParseWords qw(shellwords);
use Config;
-use parent 'Exporter';
+use base 'Exporter';
# $ML $Last_ML_Print
=head1 VERSION
-Version 3.29
+Version 3.30
=cut
-our $VERSION = '3.29';
+our $VERSION = '3.30';
# Backwards compatibility for exportable variable names.
*verbose = *Verbose;
package CallbackOK;
use TAP::Base;
-use parent 'TAP::Base';
+use base 'TAP::Base';
sub _initialize {
my $self = shift;
# This is done to prevent the colors environment variables from
# interfering.
-local %ENV = %ENV;
+local $ENV{HARNESS_SUMMARY_COLOR_FAIL};
+local $ENV{HARNESS_SUMMARY_COLOR_SUCCESS};
delete $ENV{HARNESS_SUMMARY_COLOR_FAIL};
delete $ENV{HARNESS_SUMMARY_COLOR_SUCCESS};
my $teardown = sub { $did_teardown++ };
package NoForkProcess;
-use parent qw( TAP::Parser::Iterator::Process );
+use base qw( TAP::Parser::Iterator::Process );
sub _use_open3 {return}
use strict;
use warnings;
-use parent qw(TAP::Parser);
+use base qw(TAP::Parser);
sub _initialize {
shift->_set_defaults;
use TAP::Parser::IteratorFactory;
-use parent qw( TAP::Parser::SourceHandler::File MyCustom );
+use base qw( TAP::Parser::SourceHandler::File MyCustom );
$LAST_OBJ = undef;
$CAN_HANDLE = undef;
$MAKE_ITER = undef;
use strict;
use warnings;
-use parent qw( TAP::Parser::Grammar MyCustom );
+use base qw( TAP::Parser::Grammar MyCustom );
sub _initialize {
my $self = shift;
use strict;
use warnings;
-use parent qw( TAP::Parser::Iterator MyCustom );
+use base qw( TAP::Parser::Iterator MyCustom );
sub _initialize {
my $self = shift;
use TAP::Parser::IteratorFactory;
-use parent qw( TAP::Parser::SourceHandler::Perl MyCustom );
+use base qw( TAP::Parser::SourceHandler::Perl MyCustom );
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
use strict;
use warnings;
-use parent qw( TAP::Parser::Result MyCustom );
+use base qw( TAP::Parser::Result MyCustom );
sub _initialize {
my $self = shift;
use MyResult;
-use parent qw( TAP::Parser::ResultFactory MyCustom );
+use base qw( TAP::Parser::ResultFactory MyCustom );
sub make_result {
my $class = shift;
use TAP::Parser::SourceHandler;
use TAP::Parser::IteratorFactory;
-#use parent qw( TAP::Parser::SourceHandler MyCustom );
-use parent qw( MyCustom );
+#use base qw( TAP::Parser::SourceHandler MyCustom );
+use base qw( MyCustom );
TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
use MyGrammar;
use MyResultFactory;
-use parent qw( TAP::Parser MyCustom );
+use base qw( TAP::Parser MyCustom );
sub _default_source_class {'MySourceHandler'} # deprecated
sub _default_perl_source_class {'MyPerlSourceHandler'} # deprecated
{
package TAP::TestObj;
- use parent qw(TAP::Object);
+ use base qw(TAP::Object);
sub _initialize {
my $self = shift;
use strict;
- use parent qw(TAP::Parser::Iterator);
+ use base qw(TAP::Parser::Iterator);
sub next_raw {
die 'this is the dying iterator';
package TAP::Parser::WithBrokenState;
- use parent qw( TAP::Parser );
+ use base qw( TAP::Parser );
sub _make_state_table {
return { INIT => { plan => { goto => 'FOO' } } };
package TAP::Parser::WithBrokenIter;
- use parent qw( TAP::Parser );
+ use base qw( TAP::Parser );
sub _iter {return}
package FakeProve;
-use parent qw( App::Prove );
+use base qw( App::Prove );
sub new {
my $class = shift;
package FakeProve;
-use parent qw( App::Prove );
+use base qw( App::Prove );
sub new {
my $class = shift;
use strict;
use warnings;
our $VERSION;
- use parent 'TAP::Parser::Result';
+ use base 'TAP::Parser::Result';
TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );
}
use Test::More tests => 79;
+use Config;
use IO::File;
use IO::Handle;
use File::Spec;
{ name => "valid executable",
raw => [
$perl, ( $ENV{PERL_CORE} ? '-I../../lib' : () ),
+ (map { "-I$_" } split /$Config{path_sep}/, $ENV{PERL5LIB} || ''),
'-It/lib', '-T', $file{source}
],
iclass => 'TAP::Parser::Iterator::Process',
package Test::Prove;
-use parent 'App::Prove';
+use base 'App::Prove';
sub _runtests {
my $self = shift;