In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/061828b3b8df6f38383ada8703fd195cd2f6ef74?hp=8822366175db67eb9c82ddcad11de33baa14b3b2>

- Log -----------------------------------------------------------------
commit 061828b3b8df6f38383ada8703fd195cd2f6ef74
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Thu Oct 13 08:29:16 2016 +0100

    Upgrade Test::Simple from version 1.302056 to 1.302059

M       MANIFEST
M       Porting/Maintainers.pl
M       cpan/Test-Simple/lib/Test/Builder.pm
M       cpan/Test-Simple/lib/Test/Builder/Formatter.pm
M       cpan/Test-Simple/lib/Test/Builder/Module.pm
M       cpan/Test-Simple/lib/Test/Builder/Tester.pm
M       cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
M       cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
M       cpan/Test-Simple/lib/Test/More.pm
M       cpan/Test-Simple/lib/Test/Simple.pm
M       cpan/Test-Simple/lib/Test/Tester.pm
M       cpan/Test-Simple/lib/Test/Tester/Capture.pm
M       cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
M       cpan/Test-Simple/lib/Test/Tester/Delegate.pm
M       cpan/Test-Simple/lib/Test/use/ok.pm
M       cpan/Test-Simple/lib/Test2.pm
M       cpan/Test-Simple/lib/Test2/API.pm
M       cpan/Test-Simple/lib/Test2/API/Breakage.pm
M       cpan/Test-Simple/lib/Test2/API/Context.pm
M       cpan/Test-Simple/lib/Test2/API/Instance.pm
M       cpan/Test-Simple/lib/Test2/API/Stack.pm
M       cpan/Test-Simple/lib/Test2/Event.pm
M       cpan/Test-Simple/lib/Test2/Event/Bail.pm
M       cpan/Test-Simple/lib/Test2/Event/Diag.pm
M       cpan/Test-Simple/lib/Test2/Event/Exception.pm
M       cpan/Test-Simple/lib/Test2/Event/Generic.pm
M       cpan/Test-Simple/lib/Test2/Event/Info.pm
M       cpan/Test-Simple/lib/Test2/Event/Note.pm
M       cpan/Test-Simple/lib/Test2/Event/Ok.pm
M       cpan/Test-Simple/lib/Test2/Event/Plan.pm
M       cpan/Test-Simple/lib/Test2/Event/Skip.pm
M       cpan/Test-Simple/lib/Test2/Event/Subtest.pm
M       cpan/Test-Simple/lib/Test2/Event/Waiting.pm
M       cpan/Test-Simple/lib/Test2/Formatter.pm
M       cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
M       cpan/Test-Simple/lib/Test2/Hub.pm
M       cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
M       cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
M       cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
M       cpan/Test-Simple/lib/Test2/IPC.pm
M       cpan/Test-Simple/lib/Test2/IPC/Driver.pm
M       cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
M       cpan/Test-Simple/lib/Test2/Util.pm
M       cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
M       cpan/Test-Simple/lib/Test2/Util/HashBase.pm
M       cpan/Test-Simple/lib/Test2/Util/Trace.pm
M       cpan/Test-Simple/lib/ok.pm
M       cpan/Test-Simple/t/Legacy/is_deeply_fail.t
M       cpan/Test-Simple/t/Test2/behavior/special_names.t
M       cpan/Test-Simple/t/Test2/legacy/TAP.t
M       cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
A       cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
M       cpan/Test-Simple/t/tools.pl

commit 39250dd4375e1aed90b8a926fd4c0e343b83a4d8
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Thu Oct 13 08:23:55 2016 +0100

    Upgrade parent from version 0.234 to 0.236

M       MANIFEST
M       Porting/Maintainers.pl
M       cpan/parent/lib/parent.pm
M       cpan/parent/t/parent-pmc.t
A       cpan/parent/t/rt62341.t.disabled

commit d534cca5bb42868ed02e4561cff54645087b7a98
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Thu Oct 13 08:17:00 2016 +0100

    Upgrade HTTP::Tiny from version 0.068 to 0.070

M       Porting/Maintainers.pl
M       cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |   2 +
 Porting/Maintainers.pl                             |   9 +-
 cpan/HTTP-Tiny/lib/HTTP/Tiny.pm                    |  42 +++++----
 cpan/Test-Simple/lib/Test/Builder.pm               |   7 +-
 cpan/Test-Simple/lib/Test/Builder/Formatter.pm     |   2 +-
 cpan/Test-Simple/lib/Test/Builder/Module.pm        |   2 +-
 cpan/Test-Simple/lib/Test/Builder/Tester.pm        |  11 ++-
 cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm  |   2 +-
 cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm      |   2 +-
 cpan/Test-Simple/lib/Test/More.pm                  |   6 +-
 cpan/Test-Simple/lib/Test/Simple.pm                |   2 +-
 cpan/Test-Simple/lib/Test/Tester.pm                |   5 +-
 cpan/Test-Simple/lib/Test/Tester/Capture.pm        |   2 +-
 cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm  |   2 +-
 cpan/Test-Simple/lib/Test/Tester/Delegate.pm       |   2 +-
 cpan/Test-Simple/lib/Test/use/ok.pm                |   2 +-
 cpan/Test-Simple/lib/Test2.pm                      |   2 +-
 cpan/Test-Simple/lib/Test2/API.pm                  |  10 +-
 cpan/Test-Simple/lib/Test2/API/Breakage.pm         |   2 +-
 cpan/Test-Simple/lib/Test2/API/Context.pm          |  15 ++-
 cpan/Test-Simple/lib/Test2/API/Instance.pm         |   2 +-
 cpan/Test-Simple/lib/Test2/API/Stack.pm            |   2 +-
 cpan/Test-Simple/lib/Test2/Event.pm                |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Bail.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Diag.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Exception.pm      |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Generic.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Info.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Note.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Ok.pm             |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Plan.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Skip.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Subtest.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Waiting.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Formatter.pm            |   2 +-
 cpan/Test-Simple/lib/Test2/Formatter/TAP.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Hub.pm                  |   2 +-
 cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm      |   2 +-
 .../lib/Test2/Hub/Interceptor/Terminator.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Hub/Subtest.pm          |   2 +-
 cpan/Test-Simple/lib/Test2/IPC.pm                  |   2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm     |   2 +-
 cpan/Test-Simple/lib/Test2/Util.pm                 |   2 +-
 cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm    |   2 +-
 cpan/Test-Simple/lib/Test2/Util/HashBase.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Util/Trace.pm           |   2 +-
 cpan/Test-Simple/lib/ok.pm                         |   2 +-
 cpan/Test-Simple/t/Legacy/is_deeply_fail.t         |  10 +-
 cpan/Test-Simple/t/Test2/behavior/special_names.t  |  32 -------
 cpan/Test-Simple/t/Test2/legacy/TAP.t              |  32 -------
 .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t |  20 ++--
 .../t/regression/721-nested-streamed-subtest.t     |  96 ++++++++++++++++++++
 cpan/Test-Simple/t/tools.pl                        |  34 ++++++-
 cpan/parent/lib/parent.pm                          |   6 +-
 cpan/parent/t/parent-pmc.t                         |  24 ++++-
 cpan/parent/t/rt62341.t.disabled                   | 101 +++++++++++++++++++++
 57 files changed, 378 insertions(+), 162 deletions(-)
 create mode 100644 cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
 create mode 100644 cpan/parent/t/rt62341.t.disabled

diff --git a/MANIFEST b/MANIFEST
index 065ca84..7b7fc73 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1890,6 +1890,7 @@ cpan/parent/t/parent-classfromclassfile.t tests for 
parent.pm
 cpan/parent/t/parent-classfromfile.t           tests for parent.pm
 cpan/parent/t/parent-pmc.t                     tests for parent.pm
 cpan/parent/t/parent-returns-false.t           tests for parent.pm
+cpan/parent/t/rt62341.t.disabled               test files for parent.pm
 cpan/Perl-OSType/lib/Perl/OSType.pm                    Perl::OSType
 cpan/Perl-OSType/t/OSType.t                    Perl::OSType
 cpan/perlfaq/lib/perlfaq.pm    Perl frequently asked questions
@@ -2747,6 +2748,7 @@ cpan/Test-Simple/t/regression/662-tbt-no-plan.t
 cpan/Test-Simple/t/regression/684-nested_todo_diag.t
 cpan/Test-Simple/t/regression/694_note_diag_return_values.t
 cpan/Test-Simple/t/regression/696-intercept_skip_all.t
+cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
 cpan/Test-Simple/t/regression/no_name_in_subtest.t
 cpan/Test-Simple/t/Test2/acceptance/try_it_done_testing.t
 cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 82fce35..ddf7a54 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -591,7 +591,7 @@ use File::Glob qw(:case);
     },
 
     'HTTP::Tiny' => {
-        'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.068.tar.gz',
+        'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.070.tar.gz',
         'FILES'        => q[cpan/HTTP-Tiny],
         'EXCLUDED'     => [
             't/00-report-prereqs.t',
@@ -892,8 +892,11 @@ use File::Glob qw(:case);
     },
 
     'parent' => {
-        'DISTRIBUTION' => 'CORION/parent-0.234.tar.gz',
+        'DISTRIBUTION' => 'CORION/parent-0.236.tar.gz',
         'FILES'        => q[cpan/parent],
+        'EXCLUDED'     => [
+            qr{^xt}
+        ],
     },
 
     'PathTools' => {
@@ -1153,7 +1156,7 @@ use File::Glob qw(:case);
     },
 
     'Test::Simple' => {
-        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302056.tar.gz',
+        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302059.tar.gz',
         'FILES'        => q[cpan/Test-Simple],
         'EXCLUDED'     => [
             qr{^examples/},
diff --git a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
index 6c529bb..541befe 100644
--- a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
+++ b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
@@ -4,9 +4,9 @@ use strict;
 use warnings;
 # ABSTRACT: A small, simple, correct HTTP/1.1 client
 
-our $VERSION = '0.068';
+our $VERSION = '0.070';
 
-use Carp ();
+sub _croak { require Carp; Carp::croak(@_) }
 
 #pod =method new
 #pod
@@ -207,7 +207,7 @@ for my $sub_name ( qw/get head put post delete/ ) {
     sub $sub_name {
         my (\$self, \$url, \$args) = \@_;
         \@_ == 2 || (\@_ == 3 && ref \$args eq 'HASH')
-        or Carp::croak(q/Usage: \$http->$sub_name(URL, [HASHREF])/ . "\n");
+        or _croak(q/Usage: \$http->$sub_name(URL, [HASHREF])/ . "\n");
         return \$self->request('$req_method', \$url, \$args || {});
     }
 HERE
@@ -236,7 +236,7 @@ HERE
 sub post_form {
     my ($self, $url, $data, $args) = @_;
     (@_ == 3 || @_ == 4 && ref $args eq 'HASH')
-        or Carp::croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ . 
"\n");
+        or _croak(q/Usage: $http->post_form(URL, DATAREF, [HASHREF])/ . "\n");
 
     my $headers = {};
     while ( my ($key, $value) = each %{$args->{headers} || {}} ) {
@@ -281,7 +281,7 @@ sub post_form {
 sub mirror {
     my ($self, $url, $file, $args) = @_;
     @_ == 3 || (@_ == 4 && ref $args eq 'HASH')
-      or Carp::croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ . "\n");
+      or _croak(q/Usage: $http->mirror(URL, FILE, [HASHREF])/ . "\n");
 
     if ( exists $args->{headers} ) {
         my $headers = {};
@@ -298,16 +298,16 @@ sub mirror {
 
     require Fcntl;
     sysopen my $fh, $tempfile, 
Fcntl::O_CREAT()|Fcntl::O_EXCL()|Fcntl::O_WRONLY()
-       or Carp::croak(qq/Error: Could not create temporary file $tempfile for 
downloading: $!\n/);
+       or _croak(qq/Error: Could not create temporary file $tempfile for 
downloading: $!\n/);
     binmode $fh;
     $args->{data_callback} = sub { print {$fh} $_[0] };
     my $response = $self->request('GET', $url, $args);
     close $fh
-        or Carp::croak(qq/Error: Caught error closing temporary file 
$tempfile: $!\n/);
+        or _croak(qq/Error: Caught error closing temporary file $tempfile: 
$!\n/);
 
     if ( $response->{success} ) {
         rename $tempfile, $file
-            or Carp::croak(qq/Error replacing $file with $tempfile: $!\n/);
+            or _croak(qq/Error replacing $file with $tempfile: $!\n/);
         my $lm = $response->{headers}{'last-modified'};
         if ( $lm and my $mtime = $self->_parse_http_date($lm) ) {
             utime $mtime, $mtime, $file;
@@ -417,7 +417,7 @@ my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE 
OPTIONS TRACE/;
 sub request {
     my ($self, $method, $url, $args) = @_;
     @_ == 3 || (@_ == 4 && ref $args eq 'HASH')
-      or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n");
+      or _croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n");
     $args ||= {}; # we keep some state in this during _request
 
     # RFC 2616 Section 8.1.4 mandates a single retry on broken socket
@@ -470,13 +470,13 @@ sub request {
 sub www_form_urlencode {
     my ($self, $data) = @_;
     (@_ == 2 && ref $data)
-        or Carp::croak(q/Usage: $http->www_form_urlencode(DATAREF)/ . "\n");
+        or _croak(q/Usage: $http->www_form_urlencode(DATAREF)/ . "\n");
     (ref $data eq 'HASH' || ref $data eq 'ARRAY')
-        or Carp::croak("form data must be a hash or array reference\n");
+        or _croak("form data must be a hash or array reference\n");
 
     my @params = ref $data eq 'HASH' ? %$data : @$data;
     @params % 2 == 0
-        or Carp::croak("form data reference must have an even number of 
terms\n");
+        or _croak("form data reference must have an even number of terms\n");
 
     my @terms;
     while( @params ) {
@@ -694,14 +694,14 @@ sub _proxy_connect {
 
     my @proxy_vars;
     if ( $request->{scheme} eq 'https' ) {
-        Carp::croak(qq{No https_proxy defined}) unless $self->{https_proxy};
+        _croak(qq{No https_proxy defined}) unless $self->{https_proxy};
         @proxy_vars = $self->_split_proxy( https_proxy => $self->{https_proxy} 
);
         if ( $proxy_vars[0] eq 'https' ) {
-            Carp::croak(qq{Can't proxy https over https: $request->{uri} via 
$self->{https_proxy}});
+            _croak(qq{Can't proxy https over https: $request->{uri} via 
$self->{https_proxy}});
         }
     }
     else {
-        Carp::croak(qq{No http_proxy defined}) unless $self->{http_proxy};
+        _croak(qq{No http_proxy defined}) unless $self->{http_proxy};
         @proxy_vars = $self->_split_proxy( http_proxy => $self->{http_proxy} );
     }
 
@@ -733,7 +733,7 @@ sub _split_proxy {
         defined($scheme) && length($scheme) && length($host) && length($port)
         && $path_query eq '/'
     ) {
-        Carp::croak(qq{$type URL must be in format 
http[s]://[auth@]<host>:<port>/\n});
+        _croak(qq{$type URL must be in format 
http[s]://[auth@]<host>:<port>/\n});
     }
 
     return ($scheme, $host, $port, $auth);
@@ -882,7 +882,7 @@ sub _validate_cookie_jar {
 
     # duck typing
     for my $method ( qw/add cookie_header/ ) {
-        Carp::croak(qq/Cookie jar must provide the '$method' method\n/)
+        _croak(qq/Cookie jar must provide the '$method' method\n/)
             unless ref($jar) && ref($jar)->can($method);
     }
 
@@ -1658,7 +1658,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client
 
 =head1 VERSION
 
-version 0.068
+version 0.070
 
 =head1 SYNOPSIS
 
@@ -2281,7 +2281,7 @@ David Golden <dagol...@cpan.org>
 
 =head1 CONTRIBUTORS
 
-=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert 
brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry 
David Golden Dean Pearce Edward Zborowski Jame ... [253 chars truncated]
+=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert 
brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry 
David Golden Dean Pearce Edward Zborowski Jame ... [274 chars truncated]
 
 =over 4
 
@@ -2371,6 +2371,10 @@ Mike Doherty <dohe...@cpan.org>
 
 =item *
 
+Nicolas Rochelemagne <rochelema...@cpanel.net>
+
+=item *
+
 Olaf Alders <o...@wundersolutions.com>
 
 =item *
diff --git a/cpan/Test-Simple/lib/Test/Builder.pm 
b/cpan/Test-Simple/lib/Test/Builder.pm
index f0e7598..d3febbc 100644
--- a/cpan/Test-Simple/lib/Test/Builder.pm
+++ b/cpan/Test-Simple/lib/Test/Builder.pm
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 BEGIN {
     if( $] < 5.008 ) {
@@ -197,6 +197,7 @@ sub child {
     $meta->{Test_Results} = [];
     $meta->{subevents} = $subevents;
     $meta->{subtest_id} = $hub->id;
+    $meta->{subtest_buffered} = $parent->format ? 0 : 1;
 
     $self->_add_ts_hooks;
 
@@ -269,6 +270,7 @@ FAIL
         else {
             $parent->{subevents}  = $meta->{subevents};
             $parent->{subtest_id} = $meta->{subtest_id};
+            $parent->{subtest_buffered} = $meta->{subtest_buffered};
             $parent->ok( $chub->is_passing, $meta->{Name} );
         }
     }
@@ -627,10 +629,11 @@ sub ok {
     my @attrs;
     my $subevents  = delete $self->{subevents};
     my $subtest_id = delete $self->{subtest_id};
+    my $subtest_buffered = delete $self->{subtest_buffered};
     my $epkg = 'Test2::Event::Ok';
     if ($subevents) {
         $epkg = 'Test2::Event::Subtest';
-        push @attrs => (subevents => $subevents, subtest_id => $subtest_id);
+        push @attrs => (subevents => $subevents, subtest_id => $subtest_id, 
buffered => $subtest_buffered);
     }
 
     my $e = bless {
diff --git a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm 
b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
index 83ee55f..8aa7e2c 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
@@ -2,7 +2,7 @@ package Test::Builder::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
 
diff --git a/cpan/Test-Simple/lib/Test/Builder/Module.pm 
b/cpan/Test-Simple/lib/Test/Builder/Module.pm
index 354ff58..fe35da6 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Module.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Module.pm
@@ -7,7 +7,7 @@ use Test::Builder;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 =head1 NAME
diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester.pm 
b/cpan/Test-Simple/lib/Test/Builder/Tester.pm
index c4ea80c..716d521 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Tester.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Tester.pm
@@ -1,7 +1,7 @@
 package Test::Builder::Tester;
 
 use strict;
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 use Test::Builder;
 use Symbol;
@@ -450,11 +450,12 @@ tests than we strictly should have and it'll register any 
failures we
 had that we were testing for as real failures.
 
 The color function doesn't work unless L<Term::ANSIColor> is
-compatible with your terminal.
+compatible with your terminal. Additionally, L<Win32::Console::ANSI>
+must be installed on windows platforms for color output.
 
 Bugs (and requests for new features) can be reported to the author
-though the CPAN RT system:
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Builder-Tester>
+though GitHub:
+L<https://github.com/Test-More/test-more/issues>
 
 =head1 AUTHOR
 
@@ -560,6 +561,8 @@ sub complaint {
         # get color
         eval { require Term::ANSIColor };
         unless($@) {
+            eval { require Win32::Console::ANSI } if 'MSWin32' eq $^O;  # 
support color on windows platforms
+
             # colours
 
             my $green = Term::ANSIColor::color("black") . 
Term::ANSIColor::color("on_green");
diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm 
b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
index a83edca..4ab8670 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
@@ -1,7 +1,7 @@
 package Test::Builder::Tester::Color;
 
 use strict;
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 require Test::Builder::Tester;
 
diff --git a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm 
b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
index 632e3fa..7da9339 100644
--- a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
 
diff --git a/cpan/Test-Simple/lib/Test/More.pm 
b/cpan/Test-Simple/lib/Test/More.pm
index 3705a91..6239877 100644
--- a/cpan/Test-Simple/lib/Test/More.pm
+++ b/cpan/Test-Simple/lib/Test/More.pm
@@ -17,7 +17,7 @@ sub _carp {
     return warn @_, " at $file line $line\n";
 }
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
@@ -1184,7 +1184,7 @@ sub _type {
 
     return '' if !ref $thing;
 
-    for my $type (qw(Regexp ARRAY HASH REF SCALAR GLOB CODE)) {
+    for my $type (qw(Regexp ARRAY HASH REF SCALAR GLOB CODE VSTRING)) {
         return $type if UNIVERSAL::isa( $thing, $type );
     }
 
@@ -1976,7 +1976,7 @@ the perl-qa gang.
 
 =head1 BUGS
 
-See F<http://rt.cpan.org> to report and view bugs.
+See F<https://github.com/Test-More/test-more/issues> to report and view bugs.
 
 
 =head1 SOURCE
diff --git a/cpan/Test-Simple/lib/Test/Simple.pm 
b/cpan/Test-Simple/lib/Test/Simple.pm
index 3ff4c22..b0261f8 100644
--- a/cpan/Test-Simple/lib/Test/Simple.pm
+++ b/cpan/Test-Simple/lib/Test/Simple.pm
@@ -4,7 +4,7 @@ use 5.006;
 
 use strict;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
diff --git a/cpan/Test-Simple/lib/Test/Tester.pm 
b/cpan/Test-Simple/lib/Test/Tester.pm
index 68780b7..96c42e1 100644
--- a/cpan/Test-Simple/lib/Test/Tester.pm
+++ b/cpan/Test-Simple/lib/Test/Tester.pm
@@ -18,7 +18,7 @@ require Exporter;
 
 use vars qw( @ISA @EXPORT );
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 @EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
 @ISA = qw( Exporter );
@@ -42,8 +42,9 @@ my $reset = '';
 
 if (my $want_colour = $ENV{TESTTESTERCOLOUR} || $ENV{TESTTESTERCOLOR})
 {
-       if (eval "require Term::ANSIColor")
+       if (eval { require Term::ANSIColor; 1 })
        {
+               eval { require Win32::Console::ANSI } if 'MSWin32' eq $^O;  # 
support color on windows platforms
                my ($f, $b) = split(",", $want_colour);
                $colour = 
Term::ANSIColor::color($f).Term::ANSIColor::color("on_$b");
                $reset = Term::ANSIColor::color("reset");
diff --git a/cpan/Test-Simple/lib/Test/Tester/Capture.pm 
b/cpan/Test-Simple/lib/Test/Tester/Capture.pm
index 6a169d6..eeb0d2a 100644
--- a/cpan/Test-Simple/lib/Test/Tester/Capture.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/Capture.pm
@@ -2,7 +2,7 @@ use strict;
 
 package Test::Tester::Capture;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test::Builder;
diff --git a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm 
b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
index 22eace0..d768b9b 100644
--- a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
@@ -3,7 +3,7 @@ use strict;
 
 package Test::Tester::CaptureRunner;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test::Tester::Capture;
diff --git a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm 
b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
index 13b798b..91cee4c 100644
--- a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
@@ -3,7 +3,7 @@ use warnings;
 
 package Test::Tester::Delegate;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use vars '$AUTOLOAD';
diff --git a/cpan/Test-Simple/lib/Test/use/ok.pm 
b/cpan/Test-Simple/lib/Test/use/ok.pm
index dd5fcef..5d0591f 100644
--- a/cpan/Test-Simple/lib/Test/use/ok.pm
+++ b/cpan/Test-Simple/lib/Test/use/ok.pm
@@ -1,7 +1,7 @@
 package Test::use::ok;
 use 5.005;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 __END__
diff --git a/cpan/Test-Simple/lib/Test2.pm b/cpan/Test-Simple/lib/Test2.pm
index 85a1ee3..29f8411 100644
--- a/cpan/Test-Simple/lib/Test2.pm
+++ b/cpan/Test-Simple/lib/Test2.pm
@@ -2,7 +2,7 @@ package Test2;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 1;
diff --git a/cpan/Test-Simple/lib/Test2/API.pm 
b/cpan/Test-Simple/lib/Test2/API.pm
index 118d7e6..ba25944 100644
--- a/cpan/Test-Simple/lib/Test2/API.pm
+++ b/cpan/Test-Simple/lib/Test2/API.pm
@@ -2,7 +2,7 @@ package Test2::API;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 my $INST;
@@ -447,6 +447,14 @@ sub run_subtest {
             $hub->format(undef) if $hide;
         }
     }
+    elsif (! $parent->format) {
+        # If our parent has no format that means we're in a buffered subtest
+        # and now we're trying to run a streaming subtest. There's really no
+        # way for that to work, so we need to force the use of a buffered
+        # subtest here as
+        # well. https://github.com/Test-More/test-more/issues/721
+        $buffered = 1;
+    }
 
     if ($inherit_trace) {
         my $orig = $code;
diff --git a/cpan/Test-Simple/lib/Test2/API/Breakage.pm 
b/cpan/Test-Simple/lib/Test2/API/Breakage.pm
index 0569bc9..7b21cca 100644
--- a/cpan/Test-Simple/lib/Test2/API/Breakage.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Breakage.pm
@@ -2,7 +2,7 @@ package Test2::API::Breakage;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Util qw/pkg_to_file/;
diff --git a/cpan/Test-Simple/lib/Test2/API/Context.pm 
b/cpan/Test-Simple/lib/Test2/API/Context.pm
index a83560e..c4e1ece 100644
--- a/cpan/Test-Simple/lib/Test2/API/Context.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Context.pm
@@ -2,7 +2,7 @@ package Test2::API::Context;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Carp qw/confess croak longmess/;
@@ -66,9 +66,13 @@ sub DESTROY {
 
     # Do not show the warning if it looks like an exception has been thrown, or
     # if the context is not local to this process or thread.
-    if($self->{+EVAL_ERROR} eq $@ && $hub->is_local) {
-        my $frame = $self->{+_IS_SPAWN} || $self->{+TRACE}->frame;
-        warn <<"        EOT";
+    {
+        # Sometimes $@ is uninitialized, not a problem in this case so do not
+        # show the warning about using eq.
+        no warnings 'uninitialized';
+        if($self->{+EVAL_ERROR} eq $@ && $hub->is_local) {
+            my $frame = $self->{+_IS_SPAWN} || $self->{+TRACE}->frame;
+            warn <<"            EOT";
 A context appears to have been destroyed without first calling release().
 Based on \$@ it does not look like an exception was thrown (this is not always
 a reliable test)
@@ -84,7 +88,8 @@ release():
   Tool: $frame->[3]
 
 Cleaning up the CONTEXT stack...
-        EOT
+            EOT
+        }
     }
 
     return if $self->{+_IS_SPAWN};
diff --git a/cpan/Test-Simple/lib/Test2/API/Instance.pm 
b/cpan/Test-Simple/lib/Test2/API/Instance.pm
index 1b41c66..556cad1 100644
--- a/cpan/Test-Simple/lib/Test2/API/Instance.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Instance.pm
@@ -2,7 +2,7 @@ package Test2::API::Instance;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver 
Test2::Formatter/;
diff --git a/cpan/Test-Simple/lib/Test2/API/Stack.pm 
b/cpan/Test-Simple/lib/Test2/API/Stack.pm
index 89fe2eb..6db9f57 100644
--- a/cpan/Test-Simple/lib/Test2/API/Stack.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Stack.pm
@@ -2,7 +2,7 @@ package Test2::API::Stack;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Hub();
diff --git a/cpan/Test-Simple/lib/Test2/Event.pm 
b/cpan/Test-Simple/lib/Test2/Event.pm
index 5f3427b..a0aa619 100644
--- a/cpan/Test-Simple/lib/Test2/Event.pm
+++ b/cpan/Test-Simple/lib/Test2/Event.pm
@@ -2,7 +2,7 @@ package Test2::Event;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Bail.pm 
b/cpan/Test-Simple/lib/Test2/Event/Bail.pm
index 9523a78..06c94ce 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Bail.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Bail.pm
@@ -2,7 +2,7 @@ package Test2::Event::Bail;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Diag.pm 
b/cpan/Test-Simple/lib/Test2/Event/Diag.pm
index a1339a4..08b8621 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Diag.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Diag.pm
@@ -2,7 +2,7 @@ package Test2::Event::Diag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Exception.pm 
b/cpan/Test-Simple/lib/Test2/Event/Exception.pm
index 3e3b020..4f7c7c5 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Exception.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Exception.pm
@@ -2,7 +2,7 @@ package Test2::Event::Exception;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Generic.pm 
b/cpan/Test-Simple/lib/Test2/Event/Generic.pm
index 64187f4..ff47ced 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Generic.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Generic.pm
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw/croak/;
 use Scalar::Util qw/reftype/;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Info.pm 
b/cpan/Test-Simple/lib/Test2/Event/Info.pm
index 6446b38..7b1db5f 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Info.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Info.pm
@@ -4,7 +4,7 @@ use warnings;
 
 use Scalar::Util qw/blessed/;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase qw/diagnostics renderer/;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Note.pm 
b/cpan/Test-Simple/lib/Test2/Event/Note.pm
index 03f5bd0..d0df97d 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Note.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Note.pm
@@ -2,7 +2,7 @@ package Test2::Event::Note;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Ok.pm 
b/cpan/Test-Simple/lib/Test2/Event/Ok.pm
index b9dab95..d0cf32f 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Ok.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Ok.pm
@@ -2,7 +2,7 @@ package Test2::Event::Ok;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Plan.pm 
b/cpan/Test-Simple/lib/Test2/Event/Plan.pm
index b6b3ea9..1986f59 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Plan.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Plan.pm
@@ -2,7 +2,7 @@ package Test2::Event::Plan;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Skip.pm 
b/cpan/Test-Simple/lib/Test2/Event/Skip.pm
index a54ddf6..dedb06d 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Skip.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Skip.pm
@@ -2,7 +2,7 @@ package Test2::Event::Skip;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm 
b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
index 00a07c1..f0b026e 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
@@ -2,7 +2,7 @@ package Test2::Event::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm 
b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
index 694e741..2baa533 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
@@ -2,7 +2,7 @@ package Test2::Event::Waiting;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Formatter.pm 
b/cpan/Test-Simple/lib/Test2/Formatter.pm
index 9d0cc1a..f3536c8 100644
--- a/cpan/Test-Simple/lib/Test2/Formatter.pm
+++ b/cpan/Test-Simple/lib/Test2/Formatter.pm
@@ -2,7 +2,7 @@ package Test2::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 my %ADDED;
diff --git a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm 
b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
index d69f767..93f53f0 100644
--- a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
+++ b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 require PerlIO;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Util::HashBase qw{
diff --git a/cpan/Test-Simple/lib/Test2/Hub.pm 
b/cpan/Test-Simple/lib/Test2/Hub.pm
index 1c64333..edc873b 100644
--- a/cpan/Test-Simple/lib/Test2/Hub.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub.pm
@@ -2,7 +2,7 @@ package Test2::Hub;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Carp qw/carp croak confess/;
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
index 9ed129b..31bdd14 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Hub::Interceptor::Terminator();
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
index 83dd0a9..95fb1f1 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 1;
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
index 5cbafb8..88b079a 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
diff --git a/cpan/Test-Simple/lib/Test2/IPC.pm 
b/cpan/Test-Simple/lib/Test2/IPC.pm
index d8d04f3..620f1f8 100644
--- a/cpan/Test-Simple/lib/Test2/IPC.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC.pm
@@ -2,7 +2,7 @@ package Test2::IPC;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::API::Instance;
diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm 
b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
index 68b65be..6e9d0c3 100644
--- a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Carp qw/confess longmess/;
diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm 
b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
index ad6a0c2..5fddaca 100644
--- a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
diff --git a/cpan/Test-Simple/lib/Test2/Util.pm 
b/cpan/Test-Simple/lib/Test2/Util.pm
index 436d8b8..9b810c6 100644
--- a/cpan/Test-Simple/lib/Test2/Util.pm
+++ b/cpan/Test-Simple/lib/Test2/Util.pm
@@ -2,7 +2,7 @@ package Test2::Util;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Config qw/%Config/;
diff --git a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm 
b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
index d4bbf20..e99b360 100644
--- a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Carp qw/croak/;
diff --git a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm 
b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
index 19cb225..6594c52 100644
--- a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
@@ -2,7 +2,7 @@ package Test2::Util::HashBase;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 require Carp;
diff --git a/cpan/Test-Simple/lib/Test2/Util/Trace.pm 
b/cpan/Test-Simple/lib/Test2/Util/Trace.pm
index 3ad6578..189fe5f 100644
--- a/cpan/Test-Simple/lib/Test2/Util/Trace.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/Trace.pm
@@ -2,7 +2,7 @@ package Test2::Util::Trace;
 use strict;
 use warnings;
 
-our $VERSION = '1.302056';
+our $VERSION = '1.302059';
 
 
 use Test2::Util qw/get_tid/;
diff --git a/cpan/Test-Simple/lib/ok.pm b/cpan/Test-Simple/lib/ok.pm
index e1552c2..4a42d75 100644
--- a/cpan/Test-Simple/lib/ok.pm
+++ b/cpan/Test-Simple/lib/ok.pm
@@ -1,5 +1,5 @@
 package ok;
-$ok::VERSION = '1.302056';
+$ok::VERSION = '1.302059';
 
 use strict;
 use Test::More ();
diff --git a/cpan/Test-Simple/t/Legacy/is_deeply_fail.t 
b/cpan/Test-Simple/t/Legacy/is_deeply_fail.t
index 26036fb..21efe87 100644
--- a/cpan/Test-Simple/t/Legacy/is_deeply_fail.t
+++ b/cpan/Test-Simple/t/Legacy/is_deeply_fail.t
@@ -25,7 +25,7 @@ package main;
 
 
 my $TB = Test::Builder->create;
-$TB->plan(tests => 100);
+$TB->plan(tests => 102);
 
 # Utility testing functions.
 sub ok ($;$) {
@@ -419,3 +419,11 @@ ERR
     ok !is_deeply( {x => ''}, {x => undef}, "{x => ''} != {x => undef}" );
     is( $out,                   "not ok 41 - {x => ''} != {x => undef}\n" );
 }
+
+# this will also happily fail before 5.10, even though there's no VSTRING ref 
type
+{
+    my $version1 = v1.2.3;
+    my $version2 = v1.2.4;
+    ok !is_deeply( [\\$version1], [\\$version2], "version objects");
+    is( $out, "not ok 42 - version objects\n" );
+}
diff --git a/cpan/Test-Simple/t/Test2/behavior/special_names.t 
b/cpan/Test-Simple/t/Test2/behavior/special_names.t
index 90882f5..b748cfa 100644
--- a/cpan/Test-Simple/t/Test2/behavior/special_names.t
+++ b/cpan/Test-Simple/t/Test2/behavior/special_names.t
@@ -12,38 +12,6 @@ BEGIN { require "t/tools.pl" };
 
 use Test2::API qw/test2_stack/;
 
-sub capture(&) {
-    my $code = shift;
-
-    my ($err, $out) = ("", "");
-
-    my $handles = test2_stack->top->format->handles;
-    my ($ok, $e);
-    {
-        my ($out_fh, $err_fh);
-
-        ($ok, $e) = try {
-            open($out_fh, '>', \$out) or die "Failed to open a temporary 
STDOUT: $!";
-            open($err_fh, '>', \$err) or die "Failed to open a temporary 
STDERR: $!";
-
-            test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]);
-
-            $code->();
-        };
-    }
-    test2_stack->top->format->set_handles($handles);
-
-    die $e unless $ok;
-
-    $err =~ s/ $/_/mg;
-    $out =~ s/ $/_/mg;
-
-    return {
-        STDOUT => $out,
-        STDERR => $err,
-    };
-}
-
 # Ensure the top hub is generated
 test2_stack->top;
 
diff --git a/cpan/Test-Simple/t/Test2/legacy/TAP.t 
b/cpan/Test-Simple/t/Test2/legacy/TAP.t
index 971849f..84bb18a 100644
--- a/cpan/Test-Simple/t/Test2/legacy/TAP.t
+++ b/cpan/Test-Simple/t/Test2/legacy/TAP.t
@@ -14,38 +14,6 @@ BEGIN { require "t/tools.pl" };
 use Test2::API qw/test2_stack/;
 use Test::Builder::Formatter;
 
-sub capture(&) {
-    my $code = shift;
-
-    my ($err, $out) = ("", "");
-
-    my $handles = test2_stack->top->format->handles;
-    my ($ok, $e);
-    {
-        my ($out_fh, $err_fh);
-
-        ($ok, $e) = try {
-            open($out_fh, '>', \$out) or die "Failed to open a temporary 
STDOUT: $!";
-            open($err_fh, '>', \$err) or die "Failed to open a temporary 
STDERR: $!";
-
-            test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]);
-
-            $code->();
-        };
-    }
-    test2_stack->top->format->set_handles($handles);
-
-    die $e unless $ok;
-
-    $err =~ s/ $/_/mg;
-    $out =~ s/ $/_/mg;
-
-    return {
-        STDOUT => $out,
-        STDERR => $err,
-    };
-}
-
 # The tools in tools.pl have some intentional differences from the Test::More
 # versions, these behave more like Test::More which is important for
 # back-compat.
diff --git a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t 
b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
index 1691751..6ede9df 100644
--- a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
+++ b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
@@ -6,7 +6,7 @@ use List::Util qw/shuffle/;
 use strict;
 use warnings;
 
-sub capture(&) {
+sub simple_capture(&) {
     my $code = shift;
 
     my ($err, $out) = ("", "");
@@ -136,7 +136,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     my @lines;
     my $file = __FILE__;
 
-    my $out = capture {
+    my $out = simple_capture {
         local $ENV{T2_KEEP_TEMPDIR} = 1;
 
         my $ipc = Test2::IPC::Driver::Files->new();
@@ -175,7 +175,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' already 
exists/m, "Got message for duplicate hub");
     like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' does 
not exist/m, "Cannot remove hub twice");
 
-    $out = capture {
+    $out = simple_capture {
         my $ipc = Test2::IPC::Driver::Files->new();
         $ipc->add_hub($hid);
         my $trace = Test2::Util::Trace->new(frame => [__PACKAGE__, __FILE__, 
__LINE__, 'foo']);
@@ -190,7 +190,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     like($out->{STDERR}, qr/Origin PID:\s+$$/, "Got pid");
     like($out->{STDERR}, qr/Error: Can't store GLOB items/, "Got cause");
 
-    $out = capture {
+    $out = simple_capture {
         my $ipc = Test2::IPC::Driver::Files->new();
         local $@;
         eval { $ipc->send($hid, bless({ foo => 1 }, 'Foo')) };
@@ -199,7 +199,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     };
     like($out->{STDERR}, qr/IPC Fatal Error: hub '12345-1-1' is not available, 
failed to send event!/, "Cannot send to missing hub");
 
-    $out = capture {
+    $out = simple_capture {
         my $ipc = Test2::IPC::Driver::Files->new();
         $tmpdir = $ipc->tempdir;
         $ipc->add_hub($hid);
@@ -212,7 +212,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub 
'12345-1-1' have been collected/, "Leftover files");
     like($out->{STDERR}, qr/IPC Fatal Error: Leftover files in the directory 
\(.*\.ready\)/, "What file");
 
-    $out = capture {
+    $out = simple_capture {
         my $ipc = Test2::IPC::Driver::Files->new();
         $ipc->add_hub($hid);
 
@@ -233,7 +233,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     close($fh);
 
     Storable::store({}, $fn);
-    $out = capture { eval { $ipc->read_event_file($fn) } };
+    $out = simple_capture { eval { $ipc->read_event_file($fn) } };
     like(
         $out->{STDERR},
         qr/IPC Fatal Error: Got an unblessed object: 'HASH\(.*\)'/,
@@ -241,7 +241,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     );
 
     Storable::store(bless({}, 'Test2::Event::FakeEvent'), $fn);
-    $out = capture { eval { $ipc->read_event_file($fn) } };
+    $out = simple_capture { eval { $ipc->read_event_file($fn) } };
     like(
         $out->{STDERR},
         qr{IPC Fatal Error: Event has unknown type 
\(Test2::Event::FakeEvent\), tried to load 'Test2/Event/FakeEvent\.pm' but 
failed: Can't locate Test2/Event/FakeEvent\.pm},
@@ -249,7 +249,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     );
 
     Storable::store(bless({}, 'Test2::API'), $fn);
-    $out = capture { eval { $ipc->read_event_file($fn) } };
+    $out = simple_capture { eval { $ipc->read_event_file($fn) } };
     like(
         $out->{STDERR},
         qr{'Test2::API=HASH\(.*\)' is not a 'Test2::Event' object},
@@ -257,7 +257,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     );
 
     Storable::store(bless({}, 'Foo'), $fn);
-    $out = capture {
+    $out = simple_capture {
         local @INC;
         push @INC => ('t/lib', 'lib');
         eval { $ipc->read_event_file($fn) };
diff --git a/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t 
b/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
new file mode 100644
index 0000000..d83ed18
--- /dev/null
+++ b/cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
@@ -0,0 +1,96 @@
+use strict;
+use warnings;
+
+BEGIN { require "t/tools.pl" }
+
+# This module's exports interfere with the ones in t/tools.pl
+use Test::More ();
+use Test2::API qw/run_subtest test2_stack/;
+
+{
+       test2_stack->top;
+       my $temp_hub = test2_stack->new_hub();
+
+       my $output = capture {
+               run_subtest(
+                       'parent',
+                       sub {
+                               run_subtest(
+                                       'buffered',
+                                       sub {
+                                               ok(1, 'b1');
+                                               ok(1, 'b2');
+                                       },
+                                       {buffered => 1},
+                               );
+                               run_subtest(
+                                       'streamed',
+                                       sub {
+                                               ok(1, 's1');
+                                               ok(1, 's2');
+                                       },
+                                       {buffered => 0},
+                               );
+                       },
+                       {buffered => 1},
+               );
+       };
+
+       test2_stack->pop($temp_hub);
+
+       Test::More::subtest(
+               'Test2::API::run_subtest',
+               sub {
+                       is($output->{STDERR}, q{}, 'no output on stderr');
+                       like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output 
for tests in buffered subtest');
+                       like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output 
for tests in buffered subtest');
+                       like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output 
for tests in streamed subtest');
+                       like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output 
for tests in streamed subtest');
+               }
+       );
+}
+
+{
+       test2_stack->top;
+       my $temp_hub = test2_stack->new_hub();
+
+       my $output = capture {
+               run_subtest(
+                       'parent',
+                       sub {
+                               run_subtest(
+                                       'buffered',
+                                       sub {
+                                               ok(1, 'b1');
+                                               ok(1, 'b2');
+                                       },
+                                       {buffered => 1},
+                               );
+                               Test::More::subtest(
+                                       'streamed',
+                                       sub {
+                                               ok(1, 's1');
+                                               ok(1, 's2');
+                                       },
+                                       {buffered => 0},
+                               );
+                       },
+                       {buffered => 1},
+               );
+       };
+
+       test2_stack->pop($temp_hub);
+
+       Test::More::subtest(
+               'Test::More::subtest and Test2::API::run_subtest',
+               sub {
+                       is($output->{STDERR}, q{}, 'no output on stderr');
+                       like($output->{STDOUT}, qr/ +ok 1 - b1/, 'got ok output 
for tests in buffered subtest');
+                       like($output->{STDOUT}, qr/ +ok 2 - b2/, 'got ok output 
for tests in buffered subtest');
+                       like($output->{STDOUT}, qr/ +ok 1 - s1/, 'got ok output 
for tests in streamed subtest');
+                       like($output->{STDOUT}, qr/ +ok 2 - s2/, 'got ok output 
for tests in streamed subtest');
+               }
+       );
+}
+
+done_testing;
diff --git a/cpan/Test-Simple/t/tools.pl b/cpan/Test-Simple/t/tools.pl
index e683121..e97bc78 100644
--- a/cpan/Test-Simple/t/tools.pl
+++ b/cpan/Test-Simple/t/tools.pl
@@ -1,7 +1,7 @@
 use Scalar::Util qw/blessed/;
 
 use Test2::Util qw/try/;
-use Test2::API qw/context run_subtest/;
+use Test2::API qw/context run_subtest test2_stack/;
 
 use Test2::Hub::Interceptor();
 use Test2::Hub::Interceptor::Terminator();
@@ -214,4 +214,36 @@ sub tests {
     return $bool;
 }
 
+sub capture(&) {
+    my $code = shift;
+
+    my ($err, $out) = ("", "");
+
+    my $handles = test2_stack->top->format->handles;
+    my ($ok, $e);
+    {
+        my ($out_fh, $err_fh);
+
+        ($ok, $e) = try {
+            open($out_fh, '>', \$out) or die "Failed to open a temporary 
STDOUT: $!";
+            open($err_fh, '>', \$err) or die "Failed to open a temporary 
STDERR: $!";
+
+            test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]);
+
+            $code->();
+        };
+    }
+    test2_stack->top->format->set_handles($handles);
+
+    die $e unless $ok;
+
+    $err =~ s/ $/_/mg;
+    $out =~ s/ $/_/mg;
+
+    return {
+        STDOUT => $out,
+        STDERR => $err,
+    };
+}
+
 1;
diff --git a/cpan/parent/lib/parent.pm b/cpan/parent/lib/parent.pm
index f6e8cd4..e1ccef4 100644
--- a/cpan/parent/lib/parent.pm
+++ b/cpan/parent/lib/parent.pm
@@ -1,7 +1,7 @@
 package parent;
 use strict;
 use vars qw($VERSION);
-$VERSION = '0.234';
+$VERSION = '0.236';
 
 sub import {
     my $class = shift;
@@ -19,11 +19,11 @@ sub import {
 
     {
         no strict 'refs';
-        push @{"$inheritor\::ISA"}, @_;
+        push @{"$inheritor\::ISA"}, @_; # dies if a loop is detected
     };
 };
 
-"All your base are belong to us"
+1;
 
 __END__
 
diff --git a/cpan/parent/t/parent-pmc.t b/cpan/parent/t/parent-pmc.t
index 01f70f7..68137eb 100644
--- a/cpan/parent/t/parent-pmc.t
+++ b/cpan/parent/t/parent-pmc.t
@@ -14,11 +14,25 @@ use lib 't/lib';
 
 plan skip_all => ".pmc are only available with 5.6 and later" if $] < 5.006;
 
-my $no_pmc = defined &Config::non_bincompat_options
-    ? (grep $_ eq 'PERL_DISABLE_PMC', Config::non_bincompat_options())
-    : ($Config::Config{ccflags} =~ /-DPERL_DISABLE_PMC\b/);
-plan skip_all => ".pmc are disabled in this perl"
-    if $no_pmc;
+# Skip this test if perl is compiled with PERL_DISABLE_PMC
+#
+my $pmc = 1;
+if (Config->can('non_bincompat_options')) { # $] ge '5.014'
+    $pmc = 0
+        if grep { $_ eq 'PERL_DISABLE_PMC' } Config::non_bincompat_options();
+} elsif (eval {
+    require Config::Perl::V;
+    Config::Perl::V->VERSION('0.10');
+}) {
+    $pmc = 0
+        if Config::Perl::V::myconfig()->{options}{PERL_DISABLE_PMC};
+} else {
+    $pmc = 0
+        if $Config::Config{ccflags} =~ /(?:^|\s)-DPERL_DISABLE_PMC\b/;
+}
+
+plan skip_all => 'Perl is built with PERL_DISABLE_PMC' unless $pmc;
+
 plan tests => 3;
 
 use vars qw($got_here);
diff --git a/cpan/parent/t/rt62341.t.disabled b/cpan/parent/t/rt62341.t.disabled
new file mode 100644
index 0000000..c348193
--- /dev/null
+++ b/cpan/parent/t/rt62341.t.disabled
@@ -0,0 +1,101 @@
+#!perl -w
+use strict;
+use Benchmark qw/cmpthese/;
+use Test::More tests => 1;
+
+{
+    package Bench::Base;
+    sub foo { 1 };
+}
+
+my $c;
+my $sub_iter = 100;
+
+cmpthese (-1 => {
+    recompute_existing_ISA  => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}";
+            no strict 'refs';
+            @{ "$class\::ISA"} = (@{ "$class\::ISA"},'Bench::Base');
+            die unless $class->foo;
+        }
+    },
+    recompute_new_ISA  => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}::SubSub${_}";
+            no strict 'refs';
+            @{ "$class\::ISA"} = (@{ "$class\::ISA"},'Bench::Base');
+            die unless $class->foo;
+        }
+    },
+    push_existing_ISA  => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}";
+            no strict 'refs';
+            push @{ "$class\::ISA"}, 'Bench::Base';
+            die unless $class->foo;
+        }
+    },
+    push_new_ISA  => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}::SubSub${_}";
+            no strict 'refs';
+            push @{ "$class\::ISA"}, 'Bench::Base';
+            die unless $class->foo;
+        }
+    },
+    push_new_FOO  => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}::SubSub${_}";
+            no strict 'refs';
+            push @{ "$class\::FOO"}, 'Bench::Base';
+            #die unless $class->foo;
+        }
+    },
+    push_existing_FOO => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}";
+            no strict 'refs';
+            push @{ "$class\::FOO"}, 'Bench::Base';
+            #die unless $class->foo;
+        }
+    },
+    recompute_existing_FOO => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}";
+            no strict 'refs';
+            @{ "$class\::FOO"} = (@{ "$class\::FOO"}, 'Bench::Base');
+            #die unless $class->foo;
+        }
+    },
+    
+    # Take a reference and manipulate that, in case string references are slow
+    refcompute_existing_FOO => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}";
+            no strict 'refs';
+            my $aref = \@{ "$class\::FOO"};
+            @{ $aref } = (@{ $aref }, 'Bench::Base');
+            #die unless $class->foo;
+        }
+    },
+    recompute_new_FOO => sub {
+        $c++;
+        for (1..$sub_iter) {
+            my $class = "Bench::Par::Sub_${c}::SubSub${_}";
+            no strict 'refs';
+            @{ "$class\::FOO"} = (@{ "$class\::FOO"}, 'Bench::Base');
+            #die unless $class->foo;
+        }
+    },
+});
+
+pass "Benchmarks run";

--
Perl5 Master Repository

Reply via email to