Upgrade Test-Simple from version 1.302096 to 1.302097
authorSteve Hay <steve.m.hay@googlemail.com>
Tue, 3 Oct 2017 07:12:02 +0000 (08:12 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Tue, 3 Oct 2017 07:58:26 +0000 (08:58 +0100)
81 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/Test-Simple/lib/Test/Builder.pm
cpan/Test-Simple/lib/Test/Builder/Formatter.pm
cpan/Test-Simple/lib/Test/Builder/Module.pm
cpan/Test-Simple/lib/Test/Builder/Tester.pm
cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
cpan/Test-Simple/lib/Test/More.pm
cpan/Test-Simple/lib/Test/Simple.pm
cpan/Test-Simple/lib/Test/Tester.pm
cpan/Test-Simple/lib/Test/Tester/Capture.pm
cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
cpan/Test-Simple/lib/Test/Tester/Delegate.pm
cpan/Test-Simple/lib/Test/use/ok.pm
cpan/Test-Simple/lib/Test2.pm
cpan/Test-Simple/lib/Test2/API.pm
cpan/Test-Simple/lib/Test2/API/Breakage.pm
cpan/Test-Simple/lib/Test2/API/Context.pm
cpan/Test-Simple/lib/Test2/API/Instance.pm
cpan/Test-Simple/lib/Test2/API/Stack.pm
cpan/Test-Simple/lib/Test2/Event.pm
cpan/Test-Simple/lib/Test2/Event/Bail.pm
cpan/Test-Simple/lib/Test2/Event/Diag.pm
cpan/Test-Simple/lib/Test2/Event/Encoding.pm
cpan/Test-Simple/lib/Test2/Event/Exception.pm
cpan/Test-Simple/lib/Test2/Event/Fail.pm
cpan/Test-Simple/lib/Test2/Event/Generic.pm
cpan/Test-Simple/lib/Test2/Event/Note.pm
cpan/Test-Simple/lib/Test2/Event/Ok.pm
cpan/Test-Simple/lib/Test2/Event/Pass.pm
cpan/Test-Simple/lib/Test2/Event/Plan.pm
cpan/Test-Simple/lib/Test2/Event/Skip.pm
cpan/Test-Simple/lib/Test2/Event/Subtest.pm
cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm
cpan/Test-Simple/lib/Test2/Event/Waiting.pm
cpan/Test-Simple/lib/Test2/EventFacet.pm
cpan/Test-Simple/lib/Test2/EventFacet/About.pm
cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm
cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm
cpan/Test-Simple/lib/Test2/EventFacet/Control.pm
cpan/Test-Simple/lib/Test2/EventFacet/Error.pm
cpan/Test-Simple/lib/Test2/EventFacet/Info.pm
cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm
cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm
cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm
cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm
cpan/Test-Simple/lib/Test2/Formatter.pm
cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
cpan/Test-Simple/lib/Test2/Hub.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
cpan/Test-Simple/lib/Test2/IPC.pm
cpan/Test-Simple/lib/Test2/IPC/Driver.pm
cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
cpan/Test-Simple/lib/Test2/Tools/Tiny.pm
cpan/Test-Simple/lib/Test2/Util.pm
cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm
cpan/Test-Simple/lib/Test2/Util/Trace.pm
cpan/Test-Simple/lib/ok.pm
cpan/Test-Simple/t/HashBase.t
cpan/Test-Simple/t/Legacy/Regression/736_use_ok.t
cpan/Test-Simple/t/Legacy/Regression/789-read-only.t [new file with mode: 0644]
cpan/Test-Simple/t/Legacy/harness_active.t
cpan/Test-Simple/t/Legacy/overload_threads.t
cpan/Test-Simple/t/Legacy/utf8.t
cpan/Test-Simple/t/Legacy_And_Test2/preload_diag_note.t
cpan/Test-Simple/t/Test2/behavior/init_croak.t
cpan/Test-Simple/t/Test2/behavior/nested_context_exception.t
cpan/Test-Simple/t/Test2/modules/API.t
cpan/Test-Simple/t/Test2/modules/API/Instance.t
cpan/Test-Simple/t/Test2/modules/Event/Exception.t
cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t
cpan/Test-Simple/t/Test2/modules/IPC/Driver.t
cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
cpan/Test-Simple/t/Test2/modules/Util.t
cpan/Test-Simple/t/Test2/regression/gh_16.t
cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t
cpan/Test-Simple/t/regression/errors_facet.t [new file with mode: 0644]

index ee45f3e..1d442a1 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2761,6 +2761,7 @@ cpan/Test-Simple/t/Legacy/Regression/637.t
 cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t
 cpan/Test-Simple/t/Legacy/Regression/6_cmp_ok.t
 cpan/Test-Simple/t/Legacy/Regression/736_use_ok.t
+cpan/Test-Simple/t/Legacy/Regression/789-read-only.t
 cpan/Test-Simple/t/Legacy/require_ok.t
 cpan/Test-Simple/t/Legacy/run_test.t
 cpan/Test-Simple/t/Legacy/simple.t
@@ -2843,6 +2844,7 @@ cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t
 cpan/Test-Simple/t/regression/757-reset_in_subtest.t
 cpan/Test-Simple/t/regression/buffered_subtest_plan_buffered.t
 cpan/Test-Simple/t/regression/builder_does_not_init.t
+cpan/Test-Simple/t/regression/errors_facet.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
index fe4f676..8ad3b5c 100755 (executable)
@@ -1059,7 +1059,7 @@ use File::Glob qw(:case);
     },
 
     'Test::Simple' => {
-        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302096.tar.gz',
+        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302097.tar.gz',
         'FILES'        => q[cpan/Test-Simple],
         'EXCLUDED'     => [
             qr{^examples/},
index e2a0caa..48cc042 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN {
     if( $] < 5.008 ) {
@@ -336,7 +336,7 @@ sub subtest {
         }
     }
 
-    if ($start_pid != $$ && !$INC{'Test/Sync/IPC.pm'}) {
+    if ($start_pid != $$ && !$INC{'Test2/IPC.pm'}) {
         warn $ok ? "Forked inside subtest, but subtest never finished!\n" : $err;
         exit 255;
     }
@@ -1439,7 +1439,7 @@ sub summary {
     my $ctx = $self->ctx;
     my $data = $ctx->hub->meta(__PACKAGE__, {})->{Test_Results};
     $ctx->release;
-    return map { $_->{'ok'} } @$data;
+    return map { $_ ? $_->{'ok'} : () } @$data;
 }
 
 
index 44b7cd4..6b41d7d 100644 (file)
@@ -2,7 +2,7 @@ package Test::Builder::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
 
index 1114ec9..857abfd 100644 (file)
@@ -7,7 +7,7 @@ use Test::Builder;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 =head1 NAME
index 00dc38d..7e551f7 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester;
 
 use strict;
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test::Builder;
 use Symbol;
index a3f1f70..8a7b73a 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester::Color;
 
 use strict;
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 require Test::Builder::Tester;
 
index 8c02d73..da60fba 100644 (file)
@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
 
index 4c08fea..506639b 100644 (file)
@@ -17,7 +17,7 @@ sub _carp {
     return warn @_, " at $file line $line\n";
 }
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
index 16a6574..0882f17 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 
 use strict;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
index b8dde12..786ae24 100644 (file)
@@ -18,7 +18,7 @@ require Exporter;
 
 use vars qw( @ISA @EXPORT );
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 @EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
 @ISA = qw( Exporter );
index e6965fc..c4e3d00 100644 (file)
@@ -2,7 +2,7 @@ use strict;
 
 package Test::Tester::Capture;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test::Builder;
index 18c17f7..65e2e8c 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 
 package Test::Tester::CaptureRunner;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test::Tester::Capture;
index 8e87ca6..71b383b 100644 (file)
@@ -3,7 +3,7 @@ use warnings;
 
 package Test::Tester::Delegate;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Scalar::Util();
 
index 042996b..30275e9 100644 (file)
@@ -1,7 +1,7 @@
 package Test::use::ok;
 use 5.005;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 __END__
index 61eee99..65578b1 100644 (file)
@@ -2,7 +2,7 @@ package Test2;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 1;
index e43a0d6..199e3b0 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
     $ENV{TEST2_ACTIVE} = 1;
 }
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 my $INST;
@@ -68,7 +68,7 @@ use Test2::Event::Waiting();
 use Test2::Event::Skip();
 use Test2::Event::Subtest();
 
-use Carp qw/carp croak confess longmess/;
+use Carp qw/carp croak confess/;
 use Scalar::Util qw/blessed weaken/;
 use Test2::Util qw/get_tid clone_io pkg_to_file/;
 
@@ -267,7 +267,7 @@ my $CID = 1;
 sub context {
     # We need to grab these before anything else to ensure they are not
     # changed.
-    my ($errno, $eval_error, $child_error) = (0 + $!, $@, $?);
+    my ($errno, $eval_error, $child_error, $extended_error) = (0 + $!, $@, $?, $^E);
 
     my %params = (level => 0, wrapped => 0, @_);
 
@@ -309,7 +309,7 @@ sub context {
     }
 
     # I know this is ugly....
-    ($!, $@, $?) = ($errno, $eval_error, $child_error) and return bless(
+    ($!, $@, $?, $^E) = ($errno, $eval_error, $child_error, $extended_error) and return bless(
         {
             %$current,
             _is_canon   => undef,
@@ -378,7 +378,7 @@ sub context {
 
     $params{on_init}->($current) if $params{on_init};
 
-    ($!, $@, $?) = ($errno, $eval_error, $child_error);
+    ($!, $@, $?, $^E) = ($errno, $eval_error, $child_error, $extended_error);
 
     return $current;
 }
@@ -406,7 +406,8 @@ sub _existing_error {
     my $oldframe = $ctx->{trace}->frame;
     my $olddepth = $ctx->{_depth};
 
-    my $mess = longmess();
+    # Older versions of Carp do not export longmess() function, so it needs to be called with package name
+    my $mess = Carp::longmess();
 
     warn <<"    EOT";
 $msg
@@ -524,7 +525,6 @@ sub run_subtest {
     my $stack = $ctx->stack || $STACK;
     my $hub = $stack->new_hub(
         class => 'Test2::Hub::Subtest',
-        buffered => $buffered,
         %$params,
         buffered => $buffered,
     );
index f97984f..9414df7 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Breakage;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test2::Util qw/pkg_to_file/;
index db803c0..c5486e8 100644 (file)
@@ -2,10 +2,10 @@ package Test2::API::Context;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
-use Carp qw/confess croak longmess/;
+use Carp qw/confess croak/;
 use Scalar::Util qw/weaken blessed/;
 use Test2::Util qw/get_tid try pkg_to_file get_tid/;
 
index c971458..e946d03 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Instance;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/;
index d38563d..a0d46d5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Stack;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test2::Hub();
index f7be152..2245550 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test2::Util::HashBase qw/trace -amnesty/;
 use Test2::Util::ExternalMeta qw/meta get_meta set_meta delete_meta/;
index bd1dda9..b9b3539 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Bail;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 974a203..3ebffd1 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Diag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 78f8aa2..597d929 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Encoding;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Carp qw/croak/;
 
index 4ef3916..67c757a 100644 (file)
@@ -2,12 +2,17 @@ package Test2::Event::Exception;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase qw{error};
 
+sub init {
+    my $self = shift;
+    $self->{+ERROR} = "$self->{+ERROR}";
+}
+
 sub causes_fail { 1 }
 
 sub summary {
@@ -71,6 +76,10 @@ The reason for the exception.
 
 =back
 
+=head1 CAVEATS
+
+Be aware that all exceptions are stringified during construction.
+
 =head1 SOURCE
 
 The source code repository for Test2 can be found at
index f298bc5..de34f4b 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Fail;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test2::EventFacet::Info;
 
index 04611a6..e92a9f6 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw/croak/;
 use Scalar::Util qw/reftype/;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase;
index 35e4be7..f086ad2 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Note;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 5cc02d2..932bd71 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Ok;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index a3e91e4..c31bba8 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Pass;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test2::EventFacet::Info;
 
index 3a647a5..78ef5c4 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Plan;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 69c5719..95ea922 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Skip;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
index 56c4c07..00afbf7 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
 use Test2::Util::HashBase qw{subevents buffered subtest_id};
index bd539f9..67bb637 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::TAP::Version;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Carp qw/croak/;
 
index bdf8fde..d700c7f 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Waiting;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 794c454..bed1306 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test2::Util::HashBase qw/-details/;
 use Carp qw/croak/;
index 58000d3..f34560d 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::About;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 use Test2::Util::HashBase qw{ -package -no_display };
index 409a9e3..f44050c 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Amnesty;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 sub is_list { 1 }
 
index d42677f..00ecd75 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Assert;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 use Test2::Util::HashBase qw{ -pass -no_debug -number };
index 79f2f89..babe0fe 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Control;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding };
index 2f9f9d7..b7eec24 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Error;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 sub facet_key { 'errors' }
 sub is_list { 1 }
index a7fac91..8c5dd91 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Info;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 sub is_list { 1 }
 
index bab0631..0550641 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Meta;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 use vars qw/$AUTOLOAD/;
index 5718e17..b97e5ec 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Parent;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Carp qw/confess/;
 
index 1584efb..7ab6682 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Plan;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 use Test2::Util::HashBase qw{ -count -skip -none };
index 6f93317..e9ed106 100644 (file)
@@ -2,7 +2,7 @@ package Test2::EventFacet::Trace;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
 
index cd1a784..56c68a5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 my %ADDED;
@@ -72,7 +72,7 @@ A formatter is any package or object with a C<write($event, $num)> method.
 The C<write> method is a method, so it either gets a class or instance. The two
 arguments are the C<$event> object it should record, and the C<$assert_num>
 which is the number of the current assertion (ok), or the last assertion if
-this even is not itself an assertion. The assertion number may be any integer 0
+this event is not itself an assertion. The assertion number may be any integer 0
 or greater, and may be undefined in some cases.
 
 The C<hide_buffered()> method must return a boolean. This is used to tell
index d2dbc64..524099e 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Formatter::TAP;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Test2::Util qw/clone_io/;
 
@@ -53,7 +53,7 @@ sub _open_handles {
 sub encoding {
     my $self = shift;
 
-    if (@_) {
+    if ($] ge "5.007003" and @_) {
         my ($enc) = @_;
         my $handles = $self->{+HANDLES};
 
index 9169f0b..a3cc7c2 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Carp qw/carp croak confess/;
@@ -320,7 +320,7 @@ sub process {
 
     my $fail = 0;
     $fail = 1 if $f->{assert} && !$f->{assert}->{pass};
-    $fail = 1 if $f->{error}  && $f->{error}->{fail};
+    $fail = 1 if $f->{errors} && grep { $_->{fail} } @{$f->{errors}};
     $fail = 0 if $f->{amnesty};
 
     $self->{+COUNT}++ if $f->{assert};
index efeb09f..56539a5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test2::Hub::Interceptor::Terminator();
index 51d5040..c61ac37 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 1;
index aa0a939..4e052f2 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
 use Test2::Util::HashBase qw/nested exit_code manual_skip_all/;
index c6f872e..e6bf0f5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Test2::API::Instance;
index 7f3e10b..112a85d 100644 (file)
@@ -2,10 +2,10 @@ package Test2::IPC::Driver;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
-use Carp qw/confess longmess/;
+use Carp qw/confess/;
 use Test2::Util::HashBase qw{no_fatal};
 
 use Test2::API qw/test2_ipc_add_driver/;
@@ -45,7 +45,8 @@ sub abort {
 sub abort_trace {
     my $self = shift;
     my ($msg) = @_;
-    $self->abort(longmess($msg));
+    # Older versions of Carp do not export longmess() function, so it needs to be called with package name
+    $self->abort(Carp::longmess($msg));
 }
 
 1;
index c847966..45bf94c 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
index c460196..baa6a03 100644 (file)
@@ -2,6 +2,12 @@ package Test2::Tools::Tiny;
 use strict;
 use warnings;
 
+BEGIN {
+    if ($] lt "5.008") {
+        require Test::Builder::IO::Scalar;
+    }
+}
+
 use Scalar::Util qw/blessed/;
 
 use Test2::Util qw/try/;
@@ -10,7 +16,7 @@ use Test2::API qw/context run_subtest test2_stack/;
 use Test2::Hub::Interceptor();
 use Test2::Hub::Interceptor::Terminator();
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 BEGIN { require Exporter; our @ISA = qw(Exporter) }
 our @EXPORT = qw{
@@ -253,8 +259,16 @@ sub capture(&) {
         my ($out_fh, $err_fh);
 
         ($ok, $e) = try {
+          # Scalar refs as filehandles were added in 5.8.
+          if ($] ge "5.008") {
             open($out_fh, '>', \$out) or die "Failed to open a temporary STDOUT: $!";
             open($err_fh, '>', \$err) or die "Failed to open a temporary STDERR: $!";
+          }
+          # Emulate scalar ref filehandles with a tie.
+          else {
+            $out_fh = Test::Builder::IO::Scalar->new(\$out) or die "Failed to open a temporary STDOUT";
+            $err_fh = Test::Builder::IO::Scalar->new(\$err) or die "Failed to open a temporary STDERR";
+          }
 
             test2_stack->top->format->set_handles([$out_fh, $err_fh, $out_fh]);
 
index 51c7fc9..dcfbdfa 100644 (file)
@@ -2,12 +2,16 @@ package Test2::Util;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use POSIX();
 use Config qw/%Config/;
 use Carp qw/croak/;
-use PerlIO();
+
+BEGIN {
+    local ($@, $!, $SIG{__DIE__});
+    *HAVE_PERLIO = eval { require PerlIO; PerlIO->VERSION(1.02); } ? sub() { 1 } : sub() { 0 };
+}
 
 our @EXPORT_OK = qw{
     try
@@ -25,7 +29,6 @@ our @EXPORT_OK = qw{
 
     ipc_separator
 
-    clone_io
     do_rename do_unlink
 
     try_sig_mask
@@ -175,14 +178,18 @@ my %PERLIO_SKIP = (
 
 sub clone_io {
     my ($fh) = @_;
-    my $fileno = fileno($fh) or croak "Could not get fileno for handle";
+    my $fileno = fileno($fh);
+
+    return $fh if !defined($fileno) || !length($fileno) || $fileno < 0;
+
+    open(my $out, '>&' . $fileno) or die "Can't dup fileno $fileno: $!";
 
     my %seen;
-    open(my $out, '>&', $fileno) or die "Can't dup fileno $fileno: $!";
-    binmode($out, join(":", "", "raw", grep { !$PERLIO_SKIP{$_} and !$seen{$_}++ } PerlIO::get_layers(STDOUT)));
+    my @layers = HAVE_PERLIO ? grep { !$PERLIO_SKIP{$_} and !$seen{$_}++ } PerlIO::get_layers($fh) : ();
+    binmode($out, join(":", "", "raw", @layers));
 
     my $old = select $fh;
-    my $af = $|;
+    my $af  = $|;
     select $out;
     $| = $af;
     select $old;
index b3f3884..416dfef 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 
 use Carp qw/croak/;
index 5ee96e3..914d3c7 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::Facets2Legacy;
 use strict;
 use warnings;
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use Carp qw/croak confess/;
 use Scalar::Util qw/blessed/;
index 50c3405..ae5392e 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::Trace;
 require Test2::EventFacet::Trace;
 @ISA = ('Test2::EventFacet::Trace');
 
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 1;
 
index 04c38d8..a3bef50 100644 (file)
@@ -1,5 +1,5 @@
 package ok;
-our $VERSION = '1.302096';
+our $VERSION = '1.302097';
 
 use strict;
 use Test::More ();
index aa4d435..397c697 100644 (file)
@@ -83,7 +83,10 @@ is($pkg->do_it, 'const', "worked as expected");
     *main::Const::Test::FOO = sub { 0 };
 }
 ok(!$pkg->FOO, "overrode const sub");
+{
+local $TODO = "known to fail on $]" if $] le "5.006002";
 is($pkg->do_it, 'const', "worked as expected, const was constant");
+}
 
 BEGIN {
     $INC{'Object/HashBase/Test/HBase/Wrapped.pm'} = __FILE__;
index f9a64ee..c94f7d4 100644 (file)
@@ -18,13 +18,19 @@ sub capture(&) {
     return $warn || "";
 }
 
+{
+local $TODO = "known to fail on $]" if $] le "5.006002";
 my $file = __FILE__;
-my $line = __LINE__ + 2;
+my $line = __LINE__ + 4;
 like(
-    capture { use_ok 'MyWarner' },
+    capture {
+        local $TODO; # localize $TODO to clear previous assignment, as following use_ok test is expected to pass
+        use_ok 'MyWarner';
+    },
     qr/^Deprected! run for your lives! at \Q$file\E line $line/,
     "Got the warning"
 );
+}
 
 ok(!capture { no warnings 'deprecated'; use_ok 'MyWarner' }, "No warning");
 
diff --git a/cpan/Test-Simple/t/Legacy/Regression/789-read-only.t b/cpan/Test-Simple/t/Legacy/Regression/789-read-only.t
new file mode 100644 (file)
index 0000000..120e3f9
--- /dev/null
@@ -0,0 +1,37 @@
+use Test::More;
+use strict;
+use warnings;
+
+# See https://github.com/Test-More/test-more/issues/789
+
+BEGIN {
+    plan skip_all => 'AUTHOR_TESTING not enabled'
+        unless $ENV{AUTHOR_TESTING};
+
+    plan skip_all => "This test requires Test::Class"
+        unless eval { require Test::Class; 1 };
+
+    plan skip_all => "This test requires Test::Script"
+        unless eval { require Test::Script; 1 };
+}
+
+package Test;
+
+use base 'Test::Class';
+
+use Test::More;
+use Test::Script;
+
+sub a_compilation_test : Test(startup => 1) {
+    script_compiles(__FILE__);
+}
+
+sub test : Test(1) {
+    ok(1);
+}
+
+package main;
+
+use Test::Class;
+
+Test::Class->runtests;
index 7b027a7..4e0c558 100644 (file)
@@ -47,6 +47,7 @@ Test::More->builder->no_ending(1);
 
 {
     local $ENV{HARNESS_ACTIVE} = 0;
+    local $ENV{HARNESS_IS_VERBOSE} = 0;
 
 #line 62
     fail( "this fails" );
@@ -66,6 +67,7 @@ ERR
 
 {
     local $ENV{HARNESS_ACTIVE} = 1;
+    local $ENV{HARNESS_IS_VERBOSE} = 0;
                    
 #line 71
     fail( "this fails" );
index 56bdaec..fbc067a 100644 (file)
@@ -18,7 +18,11 @@ BEGIN {
     eval { require threads; 'threads'->import; 1; } if CAN_THREAD;
 }
 
-use Test::More tests => 5;
+use Test::More;
+
+plan skip_all => "known to crash on $]" if $] le "5.006002";
+
+plan tests => 5;
 
 
 package Overloaded;
index 97e4cf4..6e629d4 100644 (file)
@@ -17,6 +17,7 @@ BEGIN {
     # All together so Test::More sees the open discipline
     $have_perlio = eval q[
         require PerlIO;
+        PerlIO->VERSION(1.02); # required for PerlIO::get_layers
         binmode *STDOUT, ":encoding(utf8)";
         binmode *STDERR, ":encoding(utf8)";
         require Test::More;
@@ -30,7 +31,7 @@ unless (Test::Builder->new->{Stack}->top->format->isa('Test::Builder::Formatter'
 }
 
 if( !$have_perlio ) {
-    plan skip_all => "Don't have PerlIO";
+    plan skip_all => "Don't have PerlIO 1.02";
 }
 else {
     plan tests => 5;
index b557230..b5cf68b 100644 (file)
@@ -1,6 +1,11 @@
 use strict;
 use warnings;
 
+if ($] lt "5.008") {
+    print "1..0 # SKIP Test cannot run on perls below 5.8.0\n";
+    exit 0;
+}
+
 BEGIN {
     require Test2::API;
     Test2::API::test2_start_preload();
index dc49283..bebf410 100644 (file)
@@ -14,6 +14,8 @@ BEGIN {
     }
 }
 
+skip_all("known to fail on $]") if $] le "5.006002";
+
 $@ = "";
 my ($file, $line) = (__FILE__, __LINE__ + 1);
 eval { my $one = Foo::Bar->new };
index 55db247..0c79c8a 100644 (file)
@@ -5,6 +5,8 @@ use Test2::Tools::Tiny;
 
 use Test2::API qw/context/;
 
+skip_all("known to fail on $]") if $] le "5.006002";
+
 sub outer {
     my $code = shift;
     my $ctx = context();
index 27790aa..b709909 100644 (file)
@@ -102,11 +102,18 @@ is_deeply([$CLASS->can('test2_ipc_drivers')->()], [qw/Test2::IPC::Driver::Files/
 my $file = __FILE__;
 my $line = __LINE__ + 1;
 my $warnings = warnings { $CLASS->can('test2_ipc_add_driver')->('fake') };
+my $sub1 = sub {
 like(
     $warnings->[0],
     qr{^IPC driver fake loaded too late to be used as the global ipc driver at \Q$file\E line $line},
     "got warning about adding driver too late"
 );
+};
+if ($] le "5.006002") {
+    todo("TODO known to fail on $]", $sub1);
+} else {
+    $sub1->();
+}
 
 is_deeply([$CLASS->can('test2_ipc_drivers')->()], [qw/fake Test2::IPC::Driver::Files/], "Got updated list");
 
index 124ae6e..18b78e7 100644 (file)
@@ -258,7 +258,8 @@ if (CAN_THREAD && $] ge '5.010') {
     like($events[0]->message, qr/Test ended with extra hubs on the stack!/, "got diag");
 }
 
-{
+SKIP: {
+    last SKIP if $] lt "5.008";
     $one->reset;
     my $stderr = "";
     {
@@ -286,7 +287,8 @@ This is not a supported configuration, you will have problems.
     EOT
 }
 
-{
+SKIP: {
+    last SKIP if $] lt "5.008";
     require Test2::API::Breakage;
     no warnings qw/redefine once/;
     my $ran = 0;
index 78c1758..4d58aad 100644 (file)
@@ -27,4 +27,29 @@ is_deeply(
     "Got error facet",
 );
 
+my $hash = {an => 'error'};
+my $str = "$hash";
+
+$exception = Test2::Event::Exception->new(
+    trace => {frame => []},
+    error => $hash,
+);
+
+ok($exception->causes_fail, "Exception events always cause failure");
+
+is($exception->error, $str, "Got stringified exception");
+
+$facet_data = $exception->facet_data;
+ok($facet_data->{about}, "Got common facet data");
+
+is_deeply(
+    $facet_data->{errors},
+    [{
+        tag => 'ERROR',
+        fail => 1,
+        details => $str,
+    }],
+    "Got error facet",
+);
+
 done_testing;
index 6964152..6f31c88 100644 (file)
@@ -20,7 +20,16 @@ BEGIN {
 
 use Test2::Tools::Tiny;
 use Test2::API qw/context/;
-use PerlIO;
+
+BEGIN {
+    eval {
+        require PerlIO;
+        PerlIO->VERSION(1.02); # required for PerlIO::get_layers
+    } or do {
+        print "1..0 # SKIP Don't have PerlIO 1.02\n";
+        exit 0;
+    }
+}
 
 sub grabber {
     my ($std, $err);
index cbdca09..0f01328 100644 (file)
@@ -25,6 +25,8 @@ for my $meth (qw/send cull add_hub drop_hub waiting is_viable/) {
     );
 }
 
+SKIP: {
+    last SKIP if $] lt "5.008";
 tests abort => sub {
     my $one = Test2::IPC::Driver->new(no_fatal => 1);
     my ($err, $out) = ("", "");
@@ -53,5 +55,6 @@ tests abort => sub {
     is($out, "not ok - IPC Fatal Error\n", "got 'not ok' on stdout");
     like($err, qr/IPC Fatal Error: foo/, "Got error");
 };
+}
 
 done_testing;
index a29023a..9ca1f5c 100644 (file)
@@ -6,6 +6,11 @@ use List::Util qw/shuffle/;
 use strict;
 use warnings;
 
+if ($] lt "5.008") {
+    print "1..0 # SKIP Test cannot run on perls below 5.8.0\n";
+    exit 0;
+}
+
 sub simple_capture(&) {
     my $code = shift;
 
index f47f3f3..4299b7e 100644 (file)
@@ -18,6 +18,8 @@ use Test2::Util qw/
     CAN_SIGSYS
 
     IS_WIN32
+
+    clone_io
 /;
 
 {
@@ -58,4 +60,18 @@ ok($check_for_sig_sys->("FOO BAR SYS"), "Found SIGSYS at end");
 ok(!$check_for_sig_sys->("FOO SYSX BAR"), "SYSX is not SYS");
 ok(!$check_for_sig_sys->("FOO XSYS BAR"), "XSYS is not SYS");
 
+my $io = clone_io(\*STDOUT);
+ok($io, "Cloned the filehandle");
+close($io);
+
+my $out = '';
+open(my $fh, '>', \$out) or die "Could not open filehandle";
+
+$io = clone_io($fh);
+is($io, $fh, "For a scalar handle we simply return the original handle, no other choice");
+print $io "Test\n";
+
+is($out, "Test\n", "wrote to the scalar handle");
+
+
 done_testing;
index 45e4cd7..a2d46f2 100644 (file)
@@ -10,7 +10,7 @@ END { $? = 0 }
 BEGIN {
     print "\n1..1\n";
     close(STDERR);
-    open(STDERR, '>&', STDOUT);
+    open(STDERR, '>&STDOUT');
 }
 
 use Test2::API;
index a2964fd..772d12a 100644 (file)
@@ -7,6 +7,7 @@ use Test2::Util qw/CAN_FORK/;
 
 BEGIN {
     skip_all "System cannot fork" unless CAN_FORK;
+    skip_all "known to fail on $]" if $] le "5.006002";
 }
 
 plan(3);
diff --git a/cpan/Test-Simple/t/regression/errors_facet.t b/cpan/Test-Simple/t/regression/errors_facet.t
new file mode 100644 (file)
index 0000000..c4e30f9
--- /dev/null
@@ -0,0 +1,53 @@
+use Test2::Tools::Tiny;
+use Test2::API qw/intercept context/;
+
+{
+    $INC{'My/Event.pm'} = 1;
+
+    package My::Event;
+    use base 'Test2::Event';
+
+    use Test2::Util::Facets2Legacy ':ALL';
+
+    sub facet_data {
+        my $self = shift;
+
+        my $out = $self->common_facet_data;
+
+        $out->{errors} = [{tag => 'OOPS', fail => !$ENV{FAILURE_DO_PASS}, details => "An error occured"}];
+
+        return $out;
+    }
+}
+
+sub error {
+    my $ctx = context();
+    my $e = $ctx->send_event('+My::Event');
+    $ctx->release;
+    return $e;
+}
+
+my $events = intercept {
+    tests foo => sub {
+        ok(1, "need at least 1 assertion");
+        error();
+    };
+};
+
+ok(!$events->[0]->pass, "Subtest did not pass");
+
+my ($passing_a, $passing_b);
+intercept {
+    my $hub = Test2::API::test2_stack->top;
+
+    $passing_a = $hub->is_passing;
+
+    error();
+
+    $passing_b = $hub->is_passing;
+};
+
+ok($passing_a, "Passign before error");
+ok(!$passing_b, "Not passing after error");
+
+done_testing;