Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Tagged 3.07, version bump

  • Loading branch information...
commit 0b140e931ae5e4a11951522ddf9022318bae2f3b 1 parent 0b936df
@AndyA authored
Showing with 990 additions and 365 deletions.
  1. +19 −1 Changes
  2. +2 −0  MANIFEST
  3. +87 −29 META.yml
  4. +21 −17 bin/prove
  5. +64 −5 lib/App/Prove.pm
  6. +19 −15 lib/App/Prove/State.pm
  7. +2 −2 lib/TAP/Base.pm
  8. +2 −2 lib/TAP/Formatter/Color.pm
  9. +11 −8 lib/TAP/Formatter/Console.pm
  10. +2 −2 lib/TAP/Formatter/Console/ParallelSession.pm
  11. +2 −2 lib/TAP/Formatter/Console/Session.pm
  12. +59 −14 lib/TAP/Harness.pm
  13. +5 −4 lib/TAP/Parser.pm
  14. +6 −4 lib/TAP/Parser/Aggregator.pm
  15. +2 −2 lib/TAP/Parser/Grammar.pm
  16. +2 −2 lib/TAP/Parser/Iterator.pm
  17. +2 −2 lib/TAP/Parser/Iterator/Array.pm
  18. +2 −2 lib/TAP/Parser/Iterator/Process.pm
  19. +2 −2 lib/TAP/Parser/Iterator/Stream.pm
  20. +2 −2 lib/TAP/Parser/Multiplexer.pm
  21. +2 −2 lib/TAP/Parser/Result.pm
  22. +2 −2 lib/TAP/Parser/Result/Bailout.pm
  23. +2 −2 lib/TAP/Parser/Result/Comment.pm
  24. +2 −2 lib/TAP/Parser/Result/Plan.pm
  25. +2 −2 lib/TAP/Parser/Result/Test.pm
  26. +2 −2 lib/TAP/Parser/Result/Unknown.pm
  27. +2 −2 lib/TAP/Parser/Result/Version.pm
  28. +2 −2 lib/TAP/Parser/Result/YAML.pm
  29. +2 −2 lib/TAP/Parser/Source.pm
  30. +3 −3 lib/TAP/Parser/Source/Perl.pm
  31. +4 −4 lib/TAP/Parser/YAMLish/Reader.pm
  32. +3 −3 lib/TAP/Parser/YAMLish/Writer.pm
  33. +23 −6 lib/Test/Harness.pm
  34. +178 −0 misc/core-tool.pl
  35. +2 −3 smoke/config.surly
  36. +1 −1  smoke/config.vms
  37. +3 −1 t/000-load.t
  38. +0 −1  t/compat/env.t
  39. +8 −3 t/compat/inc-propagation.t
  40. +10 −1 t/compat/inc_taint.t
  41. +71 −62 t/compat/test-harness-compat.t
  42. +7 −0 t/data/proverc
  43. +61 −42 t/harness.t
  44. +2 −1  t/iterators.t
  45. +14 −7 t/lib/if.pm
  46. +6 −3 t/multiplexer.t
  47. +12 −2 t/nofork-mux.t
  48. +16 −5 t/nofork.t
  49. +12 −2 t/parse.t
  50. +2 −1  t/process.t
  51. +11 −2 t/prove.t
  52. +32 −0 t/proverc.t
  53. +15 −6 t/proverun.t
  54. +25 −11 t/regression.t
  55. +7 −1 t/sample-tests/delayed
  56. +2 −0  t/sample-tests/empty
  57. +9 −1 t/sample-tests/inc_taint
  58. +0 −2  t/sample-tests/out_err_mix
  59. +5 −0 t/sample-tests/stdout_stderr
  60. +14 −2 t/source.t
  61. +10 −1 t/source_tests/source
  62. +15 −7 t/spool.t
  63. +44 −34 t/state.t
  64. +20 −9 t/taint.t
  65. +7 −2 t/testargs.t
  66. +5 −1 t/unicode.t
View
20 Changes
@@ -1,6 +1,24 @@
Revision history for Test-Harness
-3.04
+3.07 2008-01-13
+ - prove now supports HARNESS_PERL_SWITCHES.
+ - restored TEST_VERBOSE to prove.
+
+3.06 2008-01-01
+ - Skip t/unicode.t if PERL_UNICODE set. Fixes #31731.
+ Thanks Lukas.
+ - App::Prove::State no longer complains about tests that
+ are deleted.
+ - --state=new and --state=old now consider the modification time
+ of test scripts.
+ - Made test suite core-compatible.
+
+3.05 2007-12-09
+ - Skip unicode.t if Encode unavailable
+ - Support for .proverc files.
+ - Clarified prove documentation.
+
+3.04 2007-12-02
- Fixed output leakage with really_quiet set.
- Progress reports for tests without plans now show
"143/?" instead of "143/0".
View
2  MANIFEST
@@ -64,6 +64,7 @@ t/compat/test-harness-compat.t
t/compat/version.t
t/console.t
t/data/catme.1
+t/data/proverc
t/data/sample.yml
t/errors.t
t/grammar.t
@@ -85,6 +86,7 @@ t/parse.t
t/premature-bailout.t
t/process.t
t/prove.t
+t/proverc.t
t/proverun.t
t/regression.t
t/results.t
View
116 META.yml
@@ -1,6 +1,8 @@
---
name: Test-Harness
-version: 3.05
+version: 3.07
+
+
author:
@@ -20,142 +22,198 @@ recommends:
provides:
App::Prove:
file: lib/App/Prove.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Base:
file: lib/TAP/Base.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Formatter::Color:
file: lib/TAP/Formatter/Color.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Formatter::Console:
file: lib/TAP/Formatter/Console.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Formatter::Console::ParallelSession:
file: lib/TAP/Formatter/Console/ParallelSession.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Formatter::Console::Session:
file: lib/TAP/Formatter/Console/Session.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Harness:
file: lib/TAP/Harness.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser:
file: lib/TAP/Parser.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Aggregator:
file: lib/TAP/Parser/Aggregator.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Grammar:
file: lib/TAP/Parser/Grammar.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Iterator:
file: lib/TAP/Parser/Iterator.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Iterator::Array:
file: lib/TAP/Parser/Iterator/Array.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Iterator::Process:
file: lib/TAP/Parser/Iterator/Process.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Iterator::Stream:
file: lib/TAP/Parser/Iterator/Stream.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Multiplexer:
file: lib/TAP/Parser/Multiplexer.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result:
file: lib/TAP/Parser/Result.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Bailout:
file: lib/TAP/Parser/Result/Bailout.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Comment:
file: lib/TAP/Parser/Result/Comment.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Plan:
file: lib/TAP/Parser/Result/Plan.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Test:
file: lib/TAP/Parser/Result/Test.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Unknown:
file: lib/TAP/Parser/Result/Unknown.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::Version:
file: lib/TAP/Parser/Result/Version.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Result::YAML:
file: lib/TAP/Parser/Result/YAML.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Source:
file: lib/TAP/Parser/Source.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::Source::Perl:
file: lib/TAP/Parser/Source/Perl.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::YAMLish::Reader:
file: lib/TAP/Parser/YAMLish/Reader.pm
- version: 3.05
+ version: 3.07
+
+
TAP::Parser::YAMLish::Writer:
file: lib/TAP/Parser/YAMLish/Writer.pm
- version: 3.05
+ version: 3.07
+
+
Test::Harness:
file: lib/Test/Harness.pm
- version: 3.05
+ version: 3.07
+
+
generated_by: Module::Build version 0.2808
View
38 bin/prove
@@ -44,6 +44,7 @@ Boolean options:
-h, --help Display this help
-?, Display this help
-H, --man Longer manpage for prove
+ --norc Don't process default .proverc
Options that take arguments:
@@ -56,6 +57,25 @@ Options that take arguments:
-a, --archive Store the resulting TAP in an archive file.
-j, --jobs N Run N test jobs in parallel (try 9.)
--state=opts Control prove's persistent state.
+ --rc=rcfile Process options from rcfile
+
+=head1 NOTES
+
+=head2 .proverc
+
+If F<~/.proverc> or F<./.proverc> exist they will be read and any
+options they contain processed before the command line options. Options
+in F<.proverc> are specified in the same way as command line options:
+
+ # .proverc
+ --state=hot,fast,save
+ -j9 --fork
+
+Additional option files may be specified with the C<--rc> option.
+Default option file processing is disabled by the C<--norc> option.
+
+Under Windows and VMS the option file is named F<_proverc> rather than
+F<.proverc> and is sought only in the current directory.
=head2 Reading from C<STDIN>
@@ -66,8 +86,6 @@ file, you can add them to your tests by using a '-':
See the C<README> in the C<examples> directory of this distribution.
-=head1 NOTES
-
=head2 Default Test Directory
If no files or directories are supplied, C<prove> looks for all files
@@ -146,7 +164,7 @@ possible, for example, to recreate the ordering of a shuffled test.
Run only the tests that failed on the last run.
# Run all tests
-e $ prove -b --state=save
+ $ prove -b --state=save
# Run failures
$ prove -b --state=failed
@@ -221,20 +239,6 @@ The C<--state> switch may be used more than once.
$ prove -b --state=hot --state=all,save
-=head1 PERFORMANCE
-
-Because of its design, C<TAP::Parser> collects more information than
-C<Test::Harness>. However, the trade-off is sometimes slightly slower
-performance than when using the C<prove> utility which is bundled with
-L<Test::Harness>. For small tests suites, this is usually not a problem.
-However, enabling the C<--quiet> or C<--QUIET> options can sometimes speed up
-the test suite, sometimes running faster than C<prove>.
-
-=head1 SEE ALSO
-
-C<prove>, which comes with L<Test::Harness> and whose code I've nicked in a
-few places (thanks Andy!).
-
=cut
# vim:ts=4:sw=4:et:sta
View
69 lib/App/Prove.pm
@@ -15,11 +15,11 @@ App::Prove - Implements the C<prove> command.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
@@ -39,7 +39,10 @@ wrapper around an instance of this module.
use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
use constant IS_VMS => $^O eq 'VMS';
-use constant STATE_FILE => ( IS_WIN32 || IS_VMS ) ? '_prove' : '.prove';
+use constant IS_UNIXY => !( IS_VMS || IS_WIN32 );
+
+use constant STATE_FILE => IS_UNIXY ? '.prove' : '_prove';
+use constant RC_FILE => IS_UNIXY ? '.proverc' : '_proverc';
use constant PLUGINS => 'App::Prove::Plugin';
@@ -80,6 +83,7 @@ sub new {
my $self = bless {
argv => [],
+ rc_opts => [],
includes => [],
modules => [],
state => [],
@@ -98,9 +102,30 @@ sub new {
return $self;
}
+=head3 C<add_rc_file>
+
+ $prove->add_rc_file('myproj/.proverc');
+
+Called before C<process_args> to prepend the contents of an rc file to
+the options.
+
+=cut
+
+sub add_rc_file {
+ my ( $self, $rc_file ) = @_;
+
+ local *RC;
+ open RC, "<$rc_file" or croak "Can't read $rc_file ($!)";
+ while ( defined( my $line = <RC> ) ) {
+ push @{ $self->{rc_opts} }, grep $_ && $_ !~ /^#/,
+ $line =~ m{ ' ([^']*) ' | " ([^"]*) " | (\#.*) | (\S*) }xg;
+ }
+ close RC;
+}
+
=head3 C<process_args>
- $prove->process_args(@args);
+ $prove->process_args(@args);
Processes the command-line arguments. Attributes will be set
appropriately. Any filenames may be found in the C<argv> attribute.
@@ -110,7 +135,29 @@ Dies on invalid arguments.
=cut
sub process_args {
- my ( $self, @args ) = @_;
+ my $self = shift;
+
+ my @rc = RC_FILE;
+ unshift @rc, glob '~/' . RC_FILE if IS_UNIXY;
+
+ # Preprocess meta-args.
+ my @args;
+ while ( defined( my $arg = shift ) ) {
+ if ( $arg eq '--norc' ) {
+ @rc = ();
+ }
+ elsif ( $arg eq '--rc' ) {
+ defined( my $rc = shift )
+ or croak "Missing argument to --rc";
+ push @rc, $rc;
+ }
+ elsif ( $arg =~ m{^--rc=(.+)$} ) {
+ push @rc, $1;
+ }
+ else {
+ push @args, $arg;
+ }
+ }
# Everything after the arisdottle '::' gets passed as args to
# test programs.
@@ -120,11 +167,17 @@ sub process_args {
$self->{test_args} = \@test_args;
}
+ # Grab options from RC files
+ $self->add_rc_file($_) for grep -f, @rc;
+ unshift @args, @{ $self->{rc_opts} };
+
if ( my @bad = map {"-$_"} grep {/^-(man|help)$/} @args ) {
die "Long options should be written with two dashes: ",
join( ', ', @bad ), "\n";
}
+ # And finally...
+
{
local @ARGV = @args;
Getopt::Long::Configure( 'no_ignore_case', 'bundling' );
@@ -137,6 +190,7 @@ sub process_args {
'b|blib' => \$self->{blib},
's|shuffle' => \$self->{shuffle},
'color!' => \$self->{color},
+ 'colour!' => \$self->{color},
'c' => \$self->{color},
'harness=s' => \$self->{harness},
'formatter=s' => \$self->{formatter},
@@ -354,6 +408,7 @@ sub run {
$self->_shuffle(@tests) if $self->shuffle;
@tests = reverse @tests if $self->backwards;
+ local $ENV{TEST_VERBOSE} = 1 if $self->verbose;
$self->_runtests( $self->_get_args, @tests );
}
@@ -396,6 +451,10 @@ sub _get_switches {
push @switches, '-w';
}
+ if ( defined( my $hps = $ENV{HARNESS_PERL_SWITCHES} ) ) {
+ push @switches, $hps;
+ }
+
return @switches ? \@switches : ();
}
View
34 lib/App/Prove/State.pm
@@ -20,11 +20,11 @@ App::Prove::State - State storage for the C<prove> command.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
@@ -178,20 +178,10 @@ sub apply_switch {
$self->_select( order => sub { $_->{elapsed} } );
},
new => sub {
- $self->_select(
- order => sub {
- ( $_->{total_failures} || 0 )
- + ( $_->{total_passes} || 0 );
- }
- );
+ $self->_select( order => sub { -$_->{mtime} } );
},
old => sub {
- $self->_select(
- order => sub {
- -( ( $_->{total_failures} || 0 )
- + ( $_->{total_passes} || 0 ) );
- }
- );
+ $self->_select( order => sub { $_->{mtime} } );
},
save => sub {
$self->{should_save}++;
@@ -259,6 +249,7 @@ sub _query_clause {
# Select
for my $test ( sort keys %$tests ) {
+ next unless -f $test;
local $_ = $tests->{$test};
push @got, $test if $where->();
}
@@ -296,7 +287,7 @@ sub _get_raw_tests {
}
push @tests,
- sort -d $arg
+ sort -d $arg
? $recurse
? $self->_expand_dir_recursive($arg)
: glob( File::Spec->catfile( $arg, '*.t' ) )
@@ -405,9 +396,22 @@ sub load {
# $writer->write( $self->{tests} || {}, \*FH );
close FH;
$self->_regen_seq;
+ $self->_prune_and_stamp;
$self->{_}->{generation}++;
}
+sub _prune_and_stamp {
+ my $self = shift;
+ for my $name ( keys %{ $self->{_}->{tests} || {} } ) {
+ if ( my @stat = stat $name ) {
+ $self->{_}->{tests}->{$name}->{mtime} = $stat[9];
+ }
+ else {
+ delete $self->{_}->{tests}->{$name};
+ }
+ }
+}
+
sub _regen_seq {
my $self = shift;
for my $rec ( values %{ $self->{_}->{tests} || {} } ) {
View
4 lib/TAP/Base.pm
@@ -9,11 +9,11 @@ TAP::Base - Base class that provides common functionality to L<TAP::Parser> and
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
my $GOT_TIME_HIRES;
View
4 lib/TAP/Formatter/Color.pm
@@ -70,11 +70,11 @@ TAP::Formatter::Color - Run Perl test scripts with color
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
19 lib/TAP/Formatter/Console.pm
@@ -20,7 +20,7 @@ BEGIN {
errors => sub { shift; shift },
color => sub { shift; shift },
jobs => sub { shift; shift },
- stdout => sub {
+ stdout => sub {
my ( $self, $ref ) = @_;
$self->_croak("option 'stdout' needs a filehandle")
unless ( ref $ref || '' ) eq 'GLOB'
@@ -52,11 +52,11 @@ TAP::Formatter::Console - Harness output delegate for default console output
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
@@ -312,8 +312,9 @@ sub summary {
$self->_printed_summary_header(0);
my ($parser) = $aggregate->parsers($test);
$self->_output_summary_failure(
- 'failed', " Failed test number(s): ",
- $test, $parser
+ 'failed',
+ [ ' Failed test: ', ' Failed tests: ' ],
+ $test, $parser
);
$self->_output_summary_failure(
'todo_passed',
@@ -363,10 +364,12 @@ sub _output_summary_failure {
# ugly hack. Must rethink this :(
my $output = $method eq 'failed' ? '_failure_output' : '_output';
- if ( $parser->$method() ) {
+ if ( my @r = $parser->$method() ) {
$self->_summary_test_header( $test, $parser );
- $self->$output($name);
- my @results = $self->_balanced_range( 40, $parser->$method() );
+ my ( $singular, $plural )
+ = 'ARRAY' eq ref $name ? @$name : ( $name, $name );
+ $self->$output( @r == 1 ? $singular : $plural );
+ my @results = $self->_balanced_range( 40, @r );
$self->$output( sprintf "%s\n" => shift @results );
my $spaces = ' ' x 16;
while (@results) {
View
4 lib/TAP/Formatter/Console/ParallelSession.pm
@@ -48,11 +48,11 @@ TAP::Formatter::Console::ParallelSession - Harness output delegate for parallel
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Formatter/Console/Session.pm
@@ -36,11 +36,11 @@ TAP::Formatter::Console::Session - Harness output delegate for default console o
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
73 lib/TAP/Harness.pm
@@ -22,11 +22,11 @@ TAP::Harness - Run test scripts with statistics
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
$ENV{HARNESS_ACTIVE} = 1;
$ENV{HARNESS_VERSION} = $VERSION;
@@ -330,21 +330,15 @@ sub runtests {
my $aggregate = TAP::Parser::Aggregator->new;
$self->_make_callback( 'before_runtests', $aggregate );
+ $aggregate->start;
$self->aggregate_tests( $aggregate, @tests );
+ $aggregate->stop;
$self->formatter->summary($aggregate);
$self->_make_callback( 'after_runtests', $aggregate );
return $aggregate;
}
-=head3 C<aggregate_tests>
-
- $harness->aggregate_tests( $aggregate, @tests );
-
-Tests will be run in the order found.
-
-=cut
-
sub _after_test {
my ( $self, $aggregate, $test, $parser ) = @_;
@@ -431,7 +425,13 @@ sub _aggregate_single {
while ( defined( my $result = $parser->next ) ) {
$session->result($result);
- exit 1 if $result->is_bailout;
+ if ( $result->is_bailout ) {
+
+ # Keep reading until input is exhausted in the hope
+ # of allowing any pending diagnostics to show up.
+ 1 while $parser->next;
+ exit 1;
+ }
}
$self->finish_parser( $parser, $session );
@@ -441,6 +441,54 @@ sub _aggregate_single {
return;
}
+=head3 C<aggregate_tests>
+
+ $harness->aggregate_tests( $aggregate, @tests );
+
+Run the named tests and display a summary of result. Tests will be run
+in the order found.
+
+Test results will be added to the supplied L<TAP::Parser::Aggregator>.
+C<aggregate_tests> may be called multiple times to run several sets of
+tests. Multiple C<Test::Harness> instances may be used to pass results
+to a single aggregator so that different parts of a complex test suite
+may be run using different C<TAP::Harness> settings. This is useful, for
+example, in the case where some tests should run in parallel but others
+are unsuitable for parallel execution.
+
+ my $formatter = TAP::Formatter::Console->new;
+ my $ser_harness = TAP::Harness->new( { formatter => $formatter } );
+ my $par_harness = TAP::Harness->new( { formatter => $formatter,
+ jobs => 9 } );
+ my $aggregator = TAP::Parser::Aggregator->new;
+
+ $aggregator->start();
+ $ser_harness->aggregate_tests( $aggregator, @ser_tests );
+ $par_harness->aggregate_tests( $aggregator, @par_tests );
+ $aggregator->stop();
+ $formatter->summary( $aggregator );
+
+Note that for simpler testing requirements it will often be possible to
+replace the above code with a single call to C<runtests>.
+
+Each elements of the @tests array is either
+
+=over
+
+=item * the file name of a test script to run
+
+=item * a reference to a [ file name, display name ]
+
+=back
+
+When you supply a separate display name it becomes possible to run a
+test more than once; the display name is effectively the alias by which
+the test is known inside the harness. The harness doesn't care if it
+runs the same script more than once along as each invocation uses a
+different name.
+
+=cut
+
sub aggregate_tests {
my ( $self, $aggregate, @tests ) = @_;
@@ -450,7 +498,6 @@ sub aggregate_tests {
# Formatter gets only names
$self->formatter->prepare( map { $_->[1] } @expanded );
- $aggregate->start;
if ( $self->jobs > 1 ) {
if ( $self->fork ) {
@@ -464,8 +511,6 @@ sub aggregate_tests {
$self->_aggregate_single( $aggregate, @expanded );
}
- $aggregate->stop;
-
return;
}
View
9 lib/TAP/Parser.pm
@@ -19,11 +19,11 @@ TAP::Parser - Parse L<TAP|Test::Harness::TAP> output
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
my $DEFAULT_TAP_VERSION = 12;
my $MAX_TAP_VERSION = 13;
@@ -865,7 +865,8 @@ failed, any TODO tests unexpectedly succeeded, or any parse errors occurred.
sub has_problems {
my $self = shift;
- return $self->failed
+ return
+ $self->failed
|| $self->parse_errors
|| $self->wait
|| $self->exit;
@@ -1541,7 +1542,7 @@ patch against bleed by via anonymous checkout of the latest version:
=head1 COPYRIGHT & LICENSE
-Copyright 2006-2007 Curtis "Ovid" Poe, all rights reserved.
+Copyright 2006-2008 Curtis "Ovid" Poe, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
View
10 lib/TAP/Parser/Aggregator.pm
@@ -10,11 +10,11 @@ TAP::Parser::Aggregator - Aggregate TAP::Parser results
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
@@ -249,7 +249,8 @@ Return true if all the tests passed and no parse errors were detected.
sub all_passed {
my $self = shift;
- return $self->total
+ return
+ $self->total
&& $self->total == $self->passed
&& !$self->has_errors;
}
@@ -370,7 +371,8 @@ Returns true if I<any> of the parsers failed. This includes:
sub has_errors {
my $self = shift;
- return $self->failed
+ return
+ $self->failed
|| $self->parse_errors
|| $self->exit
|| $self->wait;
View
4 lib/TAP/Parser/Grammar.pm
@@ -12,11 +12,11 @@ TAP::Parser::Grammar - A grammar for the Test Anything Protocol.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Iterator.pm
@@ -13,11 +13,11 @@ TAP::Parser::Iterator - Internal TAP::Parser Iterator
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
View
4 lib/TAP/Parser/Iterator/Array.pm
@@ -11,11 +11,11 @@ TAP::Parser::Iterator::Array - Internal TAP::Parser Iterator
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
View
4 lib/TAP/Parser/Iterator/Process.pm
@@ -19,11 +19,11 @@ TAP::Parser::Iterator::Process - Internal TAP::Parser Iterator
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
View
4 lib/TAP/Parser/Iterator/Stream.pm
@@ -11,11 +11,11 @@ TAP::Parser::Iterator::Stream - Internal TAP::Parser Iterator
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
View
4 lib/TAP/Parser/Multiplexer.pm
@@ -14,11 +14,11 @@ TAP::Parser::Multiplexer - Multiplex multiple TAP::Parsers
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 SYNOPSIS
View
4 lib/TAP/Parser/Result.pm
@@ -27,11 +27,11 @@ TAP::Parser::Result - TAP::Parser output
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head2 DESCRIPTION
View
4 lib/TAP/Parser/Result/Bailout.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Bailout - Bailout result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/Comment.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Comment - Comment result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/Plan.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Plan - Plan result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/Test.pm
@@ -14,11 +14,11 @@ TAP::Parser::Result::Test - Test result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/Unknown.pm
@@ -14,11 +14,11 @@ TAP::Parser::Result::Unknown - Unknown result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/Version.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Version - TAP version result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Result/YAML.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::YAML - YAML result token.
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
4 lib/TAP/Parser/Source.pm
@@ -14,11 +14,11 @@ TAP::Parser::Source - Stream output from some source
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
View
6 lib/TAP/Parser/Source/Perl.pm
@@ -16,11 +16,11 @@ TAP::Parser::Source::Perl - Stream Perl output
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
=head1 DESCRIPTION
@@ -272,7 +272,7 @@ sub _switches {
sub _get_perl {
my $proto = shift;
- return $ENV{HARNESS_PERL} if defined $ENV{HARNESS_PERL};
+ return $ENV{HARNESS_PERL} if defined $ENV{HARNESS_PERL};
return Win32::GetShortPathName($^X) if IS_WIN32;
return $^X;
}
View
8 lib/TAP/Parser/YAMLish/Reader.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw{$VERSION};
-$VERSION = '3.05';
+$VERSION = '3.07';
# TODO:
# Handle blessed object syntax
@@ -277,7 +277,7 @@ TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator
=head1 VERSION
-Version 3.05
+Version 3.07
=head1 SYNOPSIS
@@ -326,9 +326,9 @@ L<http://use.perl.org/~Alias/journal/29427>
=head1 COPYRIGHT
-Copyright 2007 Andy Armstrong.
+Copyright 2007-2008 Andy Armstrong.
-Portions copyright 2006-2007 Adam Kennedy.
+Portions copyright 2006-2008 Adam Kennedy.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
View
6 lib/TAP/Parser/YAMLish/Writer.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw{$VERSION};
-$VERSION = '3.05';
+$VERSION = '3.07';
my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x;
@@ -147,7 +147,7 @@ TAP::Parser::YAMLish::Writer - Write YAMLish data
=head1 VERSION
-Version 3.05
+Version 3.07
=head1 SYNOPSIS
@@ -243,7 +243,7 @@ L<http://use.perl.org/~Alias/journal/29427>
=head1 COPYRIGHT
-Copyright 2007 Andy Armstrong.
+Copyright 2007-2008 Andy Armstrong.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
View
29 lib/Test/Harness.pm
@@ -21,6 +21,7 @@ use vars qw(
$Verbose $Switches $Debug
$verbose $switches $debug
$Columns
+ $Color
$Directives
$Timer
$Strap
@@ -40,11 +41,11 @@ Test::Harness - Run Perl standard test scripts with statistics
=head1 VERSION
-Version 3.05
+Version 3.07
=cut
-$VERSION = '3.05';
+$VERSION = '3.07';
# Backwards compatibility for exportable variable names.
*verbose = *Verbose;
@@ -71,6 +72,7 @@ $Switches = '-w';
$Columns = $ENV{HARNESS_COLUMNS} || $ENV{COLUMNS} || 80;
$Columns--; # Some shells have trouble with a full line of text.
$Timer = $ENV{HARNESS_TIMER} || 0;
+$Color = $ENV{HARNESS_COLOR} || 0;
=head1 SYNOPSIS
@@ -125,7 +127,7 @@ sub _aggregate {
# Jiggery pokery doesn't appear to work on VMS - so disable it
# pending investigation.
- $harness->aggregate_tests( $aggregate, @tests );
+ _aggregate_tests( $harness, $aggregate, @tests );
}
else {
my $path_sep = $Config{path_sep};
@@ -153,10 +155,18 @@ sub _aggregate {
$ENV{PERL5LIB} = join( $path_sep, @extra_inc );
}
- $harness->aggregate_tests( $aggregate, @tests );
+ _aggregate_tests( $harness, $aggregate, @tests );
}
}
+sub _aggregate_tests {
+ my ( $harness, $aggregate, @tests ) = @_;
+ $aggregate->start();
+ $harness->aggregate_tests( $aggregate, @tests );
+ $aggregate->stop();
+
+}
+
sub runtests {
my @tests = @_;
@@ -229,12 +239,16 @@ sub _new_harness {
# Do things the old way on VMS...
push @lib, _filtered_inc() if IS_VMS;
+ # If $Verbose isn't numeric default to 1. This helps core.
+ my $verbosity = ( $Verbose ? ( $Verbose !~ /\d/ ) ? 1 : $Verbose : 0 );
+
my $args = {
timer => $Timer,
directives => $Directives,
lib => \@lib,
switches => \@switches,
- verbosity => $Verbose,
+ color => $Color,
+ verbosity => $verbosity,
};
if ( defined( my $env_opt = $ENV{HARNESS_OPTIONS} ) ) {
@@ -245,6 +259,9 @@ sub _new_harness {
elsif ( $opt eq 'f' ) {
$args->{fork} = 1;
}
+ elsif ( $opt eq 'c' ) {
+ $args->{color} = 1;
+ }
else {
die "Unknown HARNESS_OPTIONS item: $opt\n";
}
@@ -563,7 +580,7 @@ L<Test::Harness> (on which this module is based) has this attribution:
=head1 LICENCE AND COPYRIGHT
-Copyright (c) 2007, Andy Armstrong C<< <andy@hexten.net> >>. All rights reserved.
+Copyright (c) 2007-2008, Andy Armstrong C<< <andy@hexten.net> >>. All rights reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
View
178 misc/core-tool.pl
@@ -0,0 +1,178 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use File::Spec;
+use File::Path;
+use File::Copy;
+use Getopt::Long;
+use File::chdir;
+
+$| = 1;
+
+my @to_core = (
+ 'bin/prove' => 'lib/Test/Harness/bin/prove',
+ 'Changes' => 'lib/Test/Harness/Changes',
+ 'lib/App/Prove.pm' => 'lib/App/Prove.pm',
+ 'lib/App/Prove/State.pm' => 'lib/App/Prove/State.pm',
+ 'lib/TAP' => 'lib/TAP',
+ 'lib/Test/Harness.pm' => 'lib/Test/Harness.pm',
+ 't' => 'lib/Test/Harness/t',
+ 't/compat' => 'lib/Test/Harness/t/compat',
+ 't/data' => 't/lib/data',
+ 't/lib/App/Prove/Plugin/Dummy.pm' => 't/lib/App/Prove/Plugin/Dummy.pm',
+ 't/lib/Dev/Null.pm' => 't/lib/Dev/Null.pm',
+ 't/lib/if.pm' => 'lib/if.pm',
+ 't/lib/IO/c55Capture.pm' => 't/lib/IO/c55Capture.pm',
+ 't/lib/NoFork.pm' => 't/lib/NoFork.pm',
+ 't/sample-tests' => 't/lib/sample-tests',
+ 't/source_tests' => 't/lib/source_tests',
+
+ # Files that we don't include that would match the above rules. All
+ # of these would match the 't' rule.
+ 't/lib/Test/Builder.pm' => undef,
+ 't/lib/Test/Builder/Module.pm' => undef,
+ 't/lib/Test/More.pm' => undef,
+ 't/lib/Test/Simple.pm' => undef,
+);
+
+my %opt = ();
+
+Getopt::Long::Configure( 'no_ignore_case', 'bundling' );
+GetOptions(
+ 'verbose' => \$opt{verbose},
+ 'help' => \$opt{help}
+) or die "Bad options, stopping\n";
+
+if ( $opt{help} ) {
+ help();
+ exit;
+}
+
+die "core-tool.pl needs three arguments\n" unless @ARGV == 3;
+my ( $cmd, $dist, $core ) = @ARGV;
+
+sanity_check_dist($dist);
+sanity_check_core($core);
+
+my %despatch = (
+ c2d => sub {
+ my ( $dist, $core ) = @_;
+
+ # Compute the diff from core to dist
+ diff_files( $dist, $core, get_file_map( $dist, $core ) );
+ },
+ d2c => sub {
+ my ( $dist, $core ) = @_;
+
+ # Compute the diff from dist to core
+ diff_files( $core, $dist, reverse get_file_map( $dist, $core ) );
+ }
+);
+
+if ( my $handler = $despatch{$cmd} ) {
+ $handler->( $dist, $core );
+}
+else {
+ die "Unknown command: $cmd. Valid commands are: ",
+ join( ', ', sort keys %despatch ), "\n";
+}
+
+# Get a list of dist_file => core_file pairs. Reverse to map the other way
+sub get_file_map {
+ my ( $dist, $core ) = @_;
+ my $manifest = File::Spec->catfile( $dist, 'MANIFEST' );
+ my @file_map = ();
+ open my $mh, '<', $manifest or die "Can't read $manifest ($!)\n";
+ while ( my $dist_file = <$mh> ) {
+ chomp $dist_file;
+ if ( defined( my $core_file = lookup( $dist_file, @to_core ) ) ) {
+ push @file_map, $dist_file, $core_file;
+ }
+ }
+ return @file_map;
+}
+
+# Do a longest leading substring match.
+sub lookup {
+ my ( $name, @name_map ) = @_;
+ my ( $longest, $match ) = ( '', undef );
+ while ( my ( $from, $to ) = splice @name_map, 0, 2 ) {
+
+ # Exact?
+ return $to if $name eq $from;
+
+ # Better match?
+ my $lf = length $from;
+ if ( $lf > length $longest
+ && substr( $name, 0, $lf + 1 ) eq "$from/" )
+ {
+ $longest = $from;
+ $match = $to;
+ }
+ }
+ return unless defined $match;
+ return $match . substr( $name, length $longest );
+}
+
+sub diff_files {
+ with_pairs(
+ sub {
+ system( qw( diff -uNr ), @_ );
+ },
+ @_
+ );
+}
+
+sub with_pairs {
+ my ( $act, $from_dir, $to_dir, @file_map ) = @_;
+ $to_dir = File::Spec->rel2abs($to_dir);
+ local $CWD = $from_dir;
+ while ( my ( $from_file, $to_file ) = splice @file_map, 0, 2 ) {
+ $act->( $from_file, File::Spec->catfile( $to_dir, $to_file ) );
+ }
+}
+
+sub help {
+ print "core-tool.pl <command> <dist> <core>";
+}
+
+sub sanity_check {
+ my ( $dir, $type, @want ) = @_;
+ my @missing = grep { !-f } map { File::Spec->catfile( $dir, $_ ) } @want;
+ if (@missing) {
+ die "$dir doesn't look like a $type directory.\n"
+ . "The following expected files are missing:\n ",
+ join( "\n ", sort @missing ), "\n";
+ }
+}
+
+{
+ my @common = qw(
+ Changes
+ MANIFEST
+ README
+ );
+
+ sub sanity_check_core {
+ my $core = shift;
+ sanity_check(
+ $core, 'core', @common, qw(
+ Artistic
+ EXTERN.h
+ INTERN.h
+ )
+ );
+ }
+
+ sub sanity_check_dist {
+ my $dist = shift;
+ sanity_check(
+ $dist, 'dist', @common, qw(
+ Build.PL
+ HACKING.pod
+ Makefile.PL
+ )
+ );
+ }
+}
View
5 smoke/config.surly
@@ -10,13 +10,12 @@ global:
- /home/andy/Works/Perl/versions/5.8.6/bin/perl
- /home/andy/Works/Perl/versions/5.8.7/bin/perl
- /usr/bin/perl
- - /home/andy/Works/Perl/versions/5.9.5/bin/perl5.9.5
- - /home/andy/Works/Perl/versions/blead/bin/perl5.*
+ - /alt/local/bin/perl
status: /home/andy/.smoke-tapx
svn: /usr/bin/svn
shell: /bin/bash
work: /home/andy/.smoke-work
- description: Ubuntu Fiesty box with Test::Harness 2.64
+ description: Ubuntu Fiesty box with Test::Harness 3.06
tasks:
- mailto:
- email: tapx-commit@hexten.net
View
2  smoke/config.vms
@@ -1,7 +1,7 @@
---
global:
perls:
- - /usr/bin/perl
+ - /alt/local/bin/perl
status: /home/andy/.smoke-tapx-vms
svn: /usr/bin/svn
work: /home/andy/.smoke-work-vms
View
4 t/000-load.t
@@ -45,5 +45,7 @@ BEGIN {
is $class->VERSION, TAP::Parser->VERSION,
"... and $class should have the correct version";
}
- diag("Testing Test::Harness $Test::Harness::VERSION, Perl $], $^X");
+
+ diag("Testing Test::Harness $Test::Harness::VERSION, Perl $], $^X")
+ unless $ENV{PERL_CORE};
}
View
1  t/compat/env.t
@@ -3,7 +3,6 @@
# Test that env vars are honoured.
use strict;
-use lib 't/lib';
use Test::More (
$^O eq 'VMS'
View
11 t/compat/inc-propagation.t
@@ -40,6 +40,10 @@ my $taint_inc
= Data::Dumper->new( [ [ grep { $_ ne '.' } @INC ] ] )->Terse(1)->Purity(1)
->Dump;
+# The tail of @INC is munged during core testing. We're only *really*
+# interested in whether 'wibble' makes it anyway.
+my $cmp_slice = $ENV{PERL_CORE} ? '[0..1]' : '';
+
my $test_template = <<'END';
#!/usr/bin/perl %s
@@ -48,7 +52,8 @@ use Test::More tests => 2;
sub _strip_dups {
my %%dups;
# Drop '.' which sneaks in on some platforms
- return grep { $_ ne '.' } grep { !$dups{$_}++ } @_;
+ my @r = grep { $_ ne '.' } grep { !$dups{$_}++ } @_;
+ return @r%s;
}
# Make sure we did something sensible with PERL5LIB
@@ -66,11 +71,11 @@ is_deeply(
END
open TEST, ">inc_check.t.tmp";
-printf TEST $test_template, '', $inc, $inc;
+printf TEST $test_template, '', $cmp_slice, $inc, $inc;
close TEST;
open TEST, ">inc_check_taint.t.tmp";
-printf TEST $test_template, '-T', $taint_inc, $taint_inc;
+printf TEST $test_template, '-T', $cmp_slice, $taint_inc, $taint_inc;
close TEST;
END { 1 while unlink 'inc_check_taint.t.tmp', 'inc_check.t.tmp'; }
View
11 t/compat/inc_taint.t
@@ -1,7 +1,16 @@
#!/usr/bin/perl -w
+BEGIN {
+ if( $ENV{PERL_CORE} ) {
+ chdir 't';
+ @INC = ('../lib', 'lib');
+ }
+ else {
+ use lib 't/lib';
+ }
+}
+
use strict;
-use lib 't/lib';
use Test::More tests => 1;
View
133 t/compat/test-harness-compat.t
@@ -1,24 +1,33 @@
#!/usr/bin/perl -w
+BEGIN {
+ if ( $ENV{PERL_CORE} ) {
+ chdir 't';
+ @INC = '../lib';
+ }
+ else {
+ unshift @INC, 't/lib';
+ }
+}
+
use strict;
-use lib 't/lib';
+# use lib 't/lib';
use Test::More;
-
use File::Spec;
-
use Test::Harness qw(execute_tests);
# unset this global when self-testing ('testcover' and etc issue)
local $ENV{HARNESS_PERL_SWITCHES};
+my $TEST_DIR = $ENV{PERL_CORE} ? 'lib/sample-tests' : 't/sample-tests';
+
{
# if the harness wants to save the resulting TAP we shouldn't
# do it for our internal calls
local $ENV{PERL_TEST_HARNESS_DUMP_TAP} = 0;
- my $TEST_DIR = 't/sample-tests';
my $PER_LOOP = 4;
my $results = {
@@ -49,118 +58,118 @@ local $ENV{HARNESS_PERL_SWITCHES};
)
) => {
'failed' => {
- 't/sample-tests/die' => {
+ "$TEST_DIR/die" => {
'canon' => '??',
'estat' => 1,
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/die',
+ 'name' => "$TEST_DIR/die",
'wstat' => '256'
},
- 't/sample-tests/die_head_end' => {
+ "$TEST_DIR/die_head_end" => {
'canon' => '??',
'estat' => 1,
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/die_head_end',
+ 'name' => "$TEST_DIR/die_head_end",
'wstat' => '256'
},
- 't/sample-tests/die_last_minute' => {
+ "$TEST_DIR/die_last_minute" => {
'canon' => '??',
'estat' => 1,
'failed' => 0,
'max' => 4,
- 'name' => 't/sample-tests/die_last_minute',
+ 'name' => "$TEST_DIR/die_last_minute",
'wstat' => '256'
},
- 't/sample-tests/duplicates' => {
+ "$TEST_DIR/duplicates" => {
'canon' => '??',
'estat' => '',
'failed' => '??',
'max' => 10,
- 'name' => 't/sample-tests/duplicates',
+ 'name' => "$TEST_DIR/duplicates",
'wstat' => ''
},
- 't/sample-tests/head_fail' => {
+ "$TEST_DIR/head_fail" => {
'canon' => 2,
'estat' => '',
'failed' => 1,
'max' => 4,
- 'name' => 't/sample-tests/head_fail',
+ 'name' => "$TEST_DIR/head_fail",
'wstat' => ''
},
- 't/sample-tests/inc_taint' => {
+ "$TEST_DIR/inc_taint" => {
'canon' => 1,
'estat' => 1,
'failed' => 1,
'max' => 1,
- 'name' => 't/sample-tests/inc_taint',
+ 'name' => "$TEST_DIR/inc_taint",
'wstat' => '256'
},
- 't/sample-tests/no_nums' => {
+ "$TEST_DIR/no_nums" => {
'canon' => 3,
'estat' => '',
'failed' => 1,
'max' => 5,
- 'name' => 't/sample-tests/no_nums',
+ 'name' => "$TEST_DIR/no_nums",
'wstat' => ''
},
- 't/sample-tests/no_output' => {
+ "$TEST_DIR/no_output" => {
'canon' => '??',
'estat' => '',
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/no_output',
+ 'name' => "$TEST_DIR/no_output",
'wstat' => ''
},
- 't/sample-tests/simple_fail' => {
+ "$TEST_DIR/simple_fail" => {
'canon' => '2 5',
'estat' => '',
'failed' => 2,
'max' => 5,
- 'name' => 't/sample-tests/simple_fail',
+ 'name' => "$TEST_DIR/simple_fail",
'wstat' => ''
},
- 't/sample-tests/switches' => {
+ "$TEST_DIR/switches" => {
'canon' => 1,
'estat' => '',
'failed' => 1,
'max' => 1,
- 'name' => 't/sample-tests/switches',
+ 'name' => "$TEST_DIR/switches",
'wstat' => ''
},
- 't/sample-tests/todo_misparse' => {
+ "$TEST_DIR/todo_misparse" => {
'canon' => 1,
'estat' => '',
'failed' => 1,
'max' => 1,
- 'name' => 't/sample-tests/todo_misparse',
+ 'name' => "$TEST_DIR/todo_misparse",
'wstat' => ''
},
- 't/sample-tests/too_many' => {
+ "$TEST_DIR/too_many" => {
'canon' => '4-7',
'estat' => 4,
'failed' => 4,
'max' => 3,
- 'name' => 't/sample-tests/too_many',
+ 'name' => "$TEST_DIR/too_many",
'wstat' => '1024'
},
- 't/sample-tests/vms_nit' => {
+ "$TEST_DIR/vms_nit" => {
'canon' => 1,
'estat' => '',
'failed' => 1,
'max' => 2,
- 'name' => 't/sample-tests/vms_nit',
+ 'name' => "$TEST_DIR/vms_nit",
'wstat' => ''
}
},
'todo' => {
- 't/sample-tests/todo_inline' => {
+ "$TEST_DIR/todo_inline" => {
'canon' => 2,
'estat' => '',
'failed' => 1,
'max' => 2,
- 'name' => 't/sample-tests/todo_inline',
+ 'name' => "$TEST_DIR/todo_inline",
'wstat' => ''
}
},
@@ -179,12 +188,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'die' => {
'failed' => {
- 't/sample-tests/die' => {
+ "$TEST_DIR/die" => {
'canon' => '??',
'estat' => 1,
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/die',
+ 'name' => "$TEST_DIR/die",
'wstat' => '256'
}
},
@@ -204,12 +213,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'die_head_end' => {
'failed' => {
- 't/sample-tests/die_head_end' => {
+ "$TEST_DIR/die_head_end" => {
'canon' => '??',
'estat' => 1,
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/die_head_end',
+ 'name' => "$TEST_DIR/die_head_end",
'wstat' => '256'
}
},
@@ -229,12 +238,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'die_last_minute' => {
'failed' => {
- 't/sample-tests/die_last_minute' => {
+ "$TEST_DIR/die_last_minute" => {
'canon' => '??',
'estat' => 1,
'failed' => 0,
'max' => 4,
- 'name' => 't/sample-tests/die_last_minute',
+ 'name' => "$TEST_DIR/die_last_minute",
'wstat' => '256'
}
},
@@ -254,12 +263,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'duplicates' => {
'failed' => {
- 't/sample-tests/duplicates' => {
+ "$TEST_DIR/duplicates" => {
'canon' => '??',
'estat' => '',
'failed' => '??',
'max' => 10,
- 'name' => 't/sample-tests/duplicates',
+ 'name' => "$TEST_DIR/duplicates",
'wstat' => ''
}
},
@@ -295,12 +304,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'head_fail' => {
'failed' => {
- 't/sample-tests/head_fail' => {
+ "$TEST_DIR/head_fail" => {
'canon' => 2,
'estat' => '',
'failed' => 1,
'max' => 4,
- 'name' => 't/sample-tests/head_fail',
+ 'name' => "$TEST_DIR/head_fail",
'wstat' => ''
}
},
@@ -320,12 +329,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'inc_taint' => {
'failed' => {
- 't/sample-tests/inc_taint' => {
+ "$TEST_DIR/inc_taint" => {
'canon' => 1,
'estat' => 1,
'failed' => 1,
'max' => 1,
- 'name' => 't/sample-tests/inc_taint',
+ 'name' => "$TEST_DIR/inc_taint",
'wstat' => '256'
}
},
@@ -377,12 +386,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'no_nums' => {
'failed' => {
- 't/sample-tests/no_nums' => {
+ "$TEST_DIR/no_nums" => {
'canon' => 3,
'estat' => '',
'failed' => 1,
'max' => 5,
- 'name' => 't/sample-tests/no_nums',
+ 'name' => "$TEST_DIR/no_nums",
'wstat' => ''
}
},
@@ -402,12 +411,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'no_output' => {
'failed' => {
- 't/sample-tests/no_output' => {
+ "$TEST_DIR/no_output" => {
'canon' => '??',
'estat' => '',
'failed' => '??',
'max' => '??',
- 'name' => 't/sample-tests/no_output',
+ 'name' => "$TEST_DIR/no_output",
'wstat' => ''
}
},
@@ -491,12 +500,12 @@ local $ENV{HARNESS_PERL_SWITCHES};
},
'simple_fail' => {
'failed' => {
- 't/sample-tests/simple_fail' => {
+ "$TEST_DIR/simple_fail" => {
'canon' => '2 5',
'estat' => '',
'failed' => 2,
'max' => 5,
- 'name' => 't/sample-tests/simple_fail',
+ 'name' => "$TEST_DIR/simple_fail",