if
($] > 5.020000 &&
$ENV
{AUTHOR_TESTING}) {
like(
intercept {
subtest_streamed
'foo'
=>
sub
{
my
(
$fh
,
$name
) = tempfile;
print
$fh
<<" EOT";
use Test2::Bundle::Extended;
BEGIN { skip_all 'because' }
1;
EOT
close
(
$fh
);
do
$name
;
unlink
(
$name
) or
warn
"Could not remove temp file $name: $!"
;
die
$@
if
$@;
die
"Ooops"
;
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Plan
=> {
directive
=>
'SKIP'
,
reason
=>
'because'
};
};
}
},
"skip_all in BEGIN inside a subtest works"
);
}
subtest_streamed
'hub tests'
=>
sub
{
my
$hub
= Test2::API::test2_stack->top;
isa_ok(
$hub
,
'Test2::Hub'
,
'Test2::Hub::Subtest'
);
my
$todo
= todo
"testing parent_todo"
;
subtest_streamed
'inner hub tests'
=>
sub
{
my
$ihub
= Test2::API::test2_stack->top;
isa_ok(
$ihub
,
'Test2::Hub'
,
'Test2::Hub::Subtest'
);
};
};
like(
intercept {
subtest_streamed
'foo'
=>
sub
{
subtest_buffered
'bar'
=>
sub
{
ok(1,
"pass"
);
};
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Subtest
=>
sub
{
field
pass
=> 1;
field
name
=>
'bar'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
field
name
=>
'pass'
;
field
pass
=> 1;
};
};
};
};
};
},
"Can nest subtests"
);
my
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 4;
subtest_streamed
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
};
};
},
"Got events for passing subtest"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 4;
subtest_streamed
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(0,
"fail"
);
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 0;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'fail'
;
field
pass
=> 0;
};
};
};
},
"Got events for failing subtest"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_streamed
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
done_testing;
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
event
Plan
=> {
max
=> 1 };
};
};
},
"Can use done_testing"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_streamed
'foo'
=>
sub
{
plan 1;
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Plan
=> {
max
=> 1 };
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
};
};
},
"Can plan"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_streamed
'foo'
=>
sub
{
skip_all
'bleh'
;
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'Subtest: foo'
;
field
subevents
=> subset {
event
Plan
=> {
directive
=>
'SKIP'
,
reason
=>
'bleh'
};
};
};
},
"Can skip_all"
);
@lines
= ();
like(
intercept {
subtest_streamed
'foo'
=>
sub
{
bail_out
'cause'
;
ok(1,
"should not see this"
);
};
},
subset {
event
Note
=> {
message
=>
'Subtest: foo'
};
event
Bail
=> {
reason
=>
'cause'
};
},
"Can bail out"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 4;
subtest_buffered
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
};
};
},
"Got events for passing subtest"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 4;
subtest_buffered
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(0,
"fail"
);
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 0;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'fail'
;
field
pass
=> 0;
};
};
};
},
"Got events for failing subtest"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_buffered
'foo'
=>
sub
{
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
done_testing;
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
event
Plan
=> {
max
=> 1 };
};
};
},
"Can use done_testing"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_buffered
'foo'
=>
sub
{
plan 1;
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Plan
=> {
max
=> 1 };
event
Ok
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[1];
field
name
=>
'pass'
;
field
pass
=> 1;
};
};
};
},
"Can plan"
);
@lines
= ();
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_buffered
'foo'
=>
sub
{
skip_all
'bleh'
;
push
@lines
=> __LINE__ + 1;
ok(1,
"pass"
);
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Plan
=> {
directive
=>
'SKIP'
,
reason
=>
'bleh'
};
};
};
},
"Can skip_all"
);
@lines
= ();
like(
intercept {
subtest_buffered
'foo'
=>
sub
{
bail_out
'cause'
;
ok(1,
"should not see this"
);
};
},
subset {
event
Bail
=> {
reason
=>
'cause'
};
},
"Can bail out"
);
@lines
= ();
my
$xyz
= 0;
like(
intercept {
push
@lines
=> __LINE__ + 5;
subtest_buffered
'foo'
=> {
manual_skip_all
=> 1},
sub
{
skip_all
'bleh'
;
$xyz
= 1;
return
;
};
},
subset {
event
Subtest
=>
sub
{
prop
file
=> __FILE__;
prop
line
=>
$lines
[0];
field
pass
=> 1;
field
name
=>
'foo'
;
field
subevents
=> subset {
event
Plan
=> {
directive
=>
'SKIP'
,
reason
=>
'bleh'
};
};
};
},
"Can skip_all"
);
ok(
$xyz
,
"skip_all did not auto-abort"
);
done_testing;