This includes many bugfixes and documentation updates.
This also fixes a notable bug where one test would pass under the
harness, but fail when run directly under perl (due to perl RT #128530)
For: RT #128536
cpan/Test-Simple/t/Legacy/subtest/fork.t
cpan/Test-Simple/t/Legacy/subtest/implicit_done.t
cpan/Test-Simple/t/Legacy/subtest/line_numbers.t
+cpan/Test-Simple/t/Legacy/subtest/plan.t
cpan/Test-Simple/t/Legacy/subtest/predicate.t
cpan/Test-Simple/t/Legacy/subtest/singleton.t
cpan/Test-Simple/t/Legacy/subtest/threads.t
cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t
cpan/Test-Simple/t/Test2/behavior/Subtest_buffer_formatter.t
cpan/Test-Simple/t/Test2/behavior/Subtest_events.t
+cpan/Test-Simple/t/Test2/behavior/Subtest_plan.t
cpan/Test-Simple/t/Test2/behavior/Taint.t
cpan/Test-Simple/t/Test2/legacy/TAP.t
cpan/Test-Simple/t/Test2/modules/API.t
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN {
if( $] < 5.008 ) {
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
=head1 NAME
package Test::Builder::Tester;
use strict;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test::Builder;
use Symbol;
package Test::Builder::Tester::Color;
use strict;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
require Test::Builder::Tester;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
return warn @_, " at $file line $line\n";
}
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test::Builder::Module;
our @ISA = qw(Test::Builder::Module);
use strict;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test::Builder::Module;
our @ISA = qw(Test::Builder::Module);
use vars qw( @ISA @EXPORT );
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
@EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
@ISA = qw( Exporter );
package Test::Tester::Capture;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test::Builder;
package Test::Tester::CaptureRunner;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test::Tester::Capture;
package Test::Tester::Delegate;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use vars '$AUTOLOAD';
package Test::use::ok;
use 5.005;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
__END__
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
1;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
my $INST;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Util qw/pkg_to_file/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Carp qw/confess croak longmess/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Hub();
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use Carp qw/croak/;
use Scalar::Util qw/reftype/;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use Test2::Util::HashBase;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
my %ADDED;
package Test2::Formatter::TAP;
use strict;
use warnings;
+require PerlIO;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Util::HashBase qw{
sub _open_handles {
my $self = shift;
- open( my $out, '>&', STDOUT ) or die "Can't dup STDOUT: $!";
- open( my $err, '>&', STDERR ) or die "Can't dup STDERR: $!";
+ my %seen;
+ open(my $out, '>&', STDOUT) or die "Can't dup STDOUT: $!";
+ binmode($out, join(":", "", "raw", grep { $_ ne 'unix' and !$seen{$_}++ } PerlIO::get_layers(STDOUT)));
+
+ %seen = ();
+ open(my $err, '>&', STDERR) or die "Can't dup STDERR: $!";
+ binmode($err, join(":", "", "raw", grep { $_ ne 'unix' and !$seen{$_}++ } PerlIO::get_layers(STDERR)));
_autoflush($out);
_autoflush($err);
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Carp qw/carp croak confess/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Hub::Interceptor::Terminator();
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
1;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::API::Instance;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Carp qw/confess longmess/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Config qw/%Config/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Carp qw/croak/;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
require Carp;
use strict;
use warnings;
-our $VERSION = '1.302035';
+our $VERSION = '1.302037';
use Test2::Util qw/get_tid/;
package ok;
-$ok::VERSION = '1.302035';
+$ok::VERSION = '1.302037';
use strict;
use Test::More ();
--- /dev/null
+#!/usr/bin/perl -w
+
+BEGIN {
+ if( $ENV{PERL_CORE} ) {
+ chdir 't';
+ @INC = ( '../lib', 'lib' );
+ }
+ else {
+ unshift @INC, 't/lib';
+ }
+}
+
+use strict;
+use warnings;
+
+use Test::Builder::NoOutput;
+
+use Test::More tests => 6;
+
+# Formatting may change if we're running under Test::Harness.
+$ENV{HARNESS_ACTIVE} = 0;
+
+{
+ ok defined &subtest, 'subtest() should be exported to our namespace';
+ is prototype('subtest'), undef, '... has no prototype';
+
+ subtest 'subtest with plan', sub {
+ plan tests => 2;
+ ok 1, 'planned subtests should work';
+ ok 1, '... and support more than one test';
+ };
+ subtest 'subtest without plan', sub {
+ plan 'no_plan';
+ ok 1, 'no_plan subtests should work';
+ ok 1, '... and support more than one test';
+ ok 1, '... no matter how many tests are run';
+ };
+ subtest 'subtest with implicit done_testing()', sub {
+ ok 1, 'subtests with an implicit done testing should work';
+ ok 1, '... and support more than one test';
+ ok 1, '... no matter how many tests are run';
+ };
+ subtest 'subtest with explicit done_testing()', sub {
+ ok 1, 'subtests with an explicit done testing should work';
+ ok 1, '... and support more than one test';
+ ok 1, '... no matter how many tests are run';
+ done_testing();
+ };
+}
--- /dev/null
+use strict;
+use warnings;
+
+BEGIN { require "t/tools.pl" };
+
+use Test2::API qw/run_subtest intercept/;
+
+my $events = intercept {
+ my $code = sub { plan 4; ok(1) };
+ run_subtest('bad_plan', $code, 'buffered');
+};
+
+is(
+ $events->[-1]->message,
+ "Bad subtest plan, expected 4 but ran 1",
+ "Helpful message if subtest has a bad plan",
+);
+
+done_testing;