TAP3-Tap3edit
view release on metacpan or search on metacpan
inc/Test2/API.pm view on Meta::CPAN
my $ENDING = 0;
sub test2_unset_is_end { $ENDING = 0 }
sub test2_get_is_end { $ENDING }
sub test2_set_is_end {
my $before = $ENDING;
($ENDING) = @_ ? @_ : (1);
# Only send the event in a transition from false to true
return if $before;
return unless $ENDING;
return unless $INST;
my $stack = $INST->stack or return;
my $root = $stack->root or return;
return unless $root->count;
return unless $$ == $INST->pid;
return unless get_tid() == $INST->tid;
my $trace = Test2::EventFacet::Trace->new(
frame => [__PACKAGE__, __FILE__, __LINE__, __PACKAGE__ . '::test2_set_is_end'],
);
my $ctx = Test2::API::Context->new(
trace => $trace,
hub => $root,
);
$ctx->send_ev2(control => { phase => 'END', details => 'Transition to END phase' });
1;
}
use Test2::API::Instance(\$INST);
# Set the exit status
END {
test2_set_is_end(); # See gh #16
$INST->set_exit();
}
sub CLONE {
my $init = test2_init_done();
my $load = test2_load_done();
return if $init && $load;
require Carp;
Carp::croak "Test2 must be fully loaded before you start a new thread!\n";
}
# See gh #16
{
no warnings;
INIT { eval 'END { test2_set_is_end() }; 1' or die $@ }
}
BEGIN {
no warnings 'once';
if($] ge '5.014' || $ENV{T2_CHECK_DEPTH} || $Test2::API::DO_DEPTH_CHECK) {
*DO_DEPTH_CHECK = sub() { 1 };
}
else {
*DO_DEPTH_CHECK = sub() { 0 };
}
}
use Test2::EventFacet::Trace();
use Test2::Util::Trace(); # Legacy
use Test2::Hub::Subtest();
use Test2::Hub::Interceptor();
use Test2::Hub::Interceptor::Terminator();
use Test2::Event::Ok();
use Test2::Event::Diag();
use Test2::Event::Note();
use Test2::Event::Plan();
use Test2::Event::Bail();
use Test2::Event::Exception();
use Test2::Event::Waiting();
use Test2::Event::Skip();
use Test2::Event::Subtest();
use Carp qw/carp croak confess/;
use Scalar::Util qw/blessed weaken/;
use Test2::Util qw/get_tid clone_io pkg_to_file gen_uid/;
our @EXPORT_OK = qw{
context release
context_do
no_context
intercept intercept_deep
run_subtest
test2_init_done
test2_load_done
test2_load
test2_start_preload
test2_stop_preload
test2_in_preload
test2_is_testing_done
test2_set_is_end
test2_unset_is_end
test2_get_is_end
test2_pid
test2_tid
test2_stack
test2_no_wait
test2_ipc_wait_enable
test2_ipc_wait_disable
test2_ipc_wait_enabled
test2_add_uuid_via
test2_add_callback_testing_done
test2_add_callback_context_aquire
( run in 1.775 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )