xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/Builder/is_passing.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
1*5759b3d2Safresh1#!/usr/bin/perl -w
2*5759b3d2Safresh1
3*5759b3d2Safresh1use strict;
4*5759b3d2Safresh1use lib 't/lib';
5*5759b3d2Safresh1
6*5759b3d2Safresh1# We're going to need to override exit() later
7*5759b3d2Safresh1BEGIN {
8*5759b3d2Safresh1    require Test2::Hub;
9*5759b3d2Safresh1    no warnings 'redefine';
10*5759b3d2Safresh1    *Test2::Hub::terminate = sub {
11*5759b3d2Safresh1        my $status = @_ ? 0 : shift;
12*5759b3d2Safresh1        CORE::exit $status;
13*5759b3d2Safresh1    };
14*5759b3d2Safresh1}
15*5759b3d2Safresh1
16*5759b3d2Safresh1use Test::More;
17*5759b3d2Safresh1use Test::Builder;
18*5759b3d2Safresh1use Test::Builder::NoOutput;
19*5759b3d2Safresh1
20*5759b3d2Safresh1{
21*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
22*5759b3d2Safresh1    ok $tb->is_passing, "a fresh TB object is passing";
23*5759b3d2Safresh1
24*5759b3d2Safresh1    $tb->ok(1);
25*5759b3d2Safresh1    ok $tb->is_passing, "  still passing after a test";
26*5759b3d2Safresh1
27*5759b3d2Safresh1    $tb->ok(0);
28*5759b3d2Safresh1    ok !$tb->is_passing, "  not passing after a failing test";
29*5759b3d2Safresh1
30*5759b3d2Safresh1    $tb->ok(1);
31*5759b3d2Safresh1    ok !$tb->is_passing, "  a passing test doesn't resurrect it";
32*5759b3d2Safresh1
33*5759b3d2Safresh1    $tb->done_testing(3);
34*5759b3d2Safresh1    ok !$tb->is_passing, "  a successful plan doesn't help either";
35*5759b3d2Safresh1}
36*5759b3d2Safresh1
37*5759b3d2Safresh1
38*5759b3d2Safresh1# See if is_passing() notices a plan overrun
39*5759b3d2Safresh1{
40*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
41*5759b3d2Safresh1    $tb->plan( tests => 1 );
42*5759b3d2Safresh1    $tb->ok(1);
43*5759b3d2Safresh1    ok $tb->is_passing, "Passing with a plan";
44*5759b3d2Safresh1
45*5759b3d2Safresh1    $tb->ok(1);
46*5759b3d2Safresh1    ok !$tb->is_passing, "  passing test, but it overran the plan";
47*5759b3d2Safresh1}
48*5759b3d2Safresh1
49*5759b3d2Safresh1
50*5759b3d2Safresh1# is_passing() vs no_plan
51*5759b3d2Safresh1{
52*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
53*5759b3d2Safresh1    $tb->plan( "no_plan" );
54*5759b3d2Safresh1    ok $tb->is_passing, "Passing with no_plan";
55*5759b3d2Safresh1
56*5759b3d2Safresh1    $tb->ok(1);
57*5759b3d2Safresh1    ok $tb->is_passing, "  still passing after a test";
58*5759b3d2Safresh1
59*5759b3d2Safresh1    $tb->ok(1);
60*5759b3d2Safresh1    ok $tb->is_passing, "  and another test";
61*5759b3d2Safresh1
62*5759b3d2Safresh1    $tb->_ending;
63*5759b3d2Safresh1    ok $tb->is_passing, "  and after the ending";
64*5759b3d2Safresh1}
65*5759b3d2Safresh1
66*5759b3d2Safresh1# is_passing() vs skip_all
67*5759b3d2Safresh1{
68*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
69*5759b3d2Safresh1
70*5759b3d2Safresh1    {
71*5759b3d2Safresh1        no warnings 'redefine';
72*5759b3d2Safresh1        local *Test2::Hub::terminate = sub { 1 };
73*5759b3d2Safresh1
74*5759b3d2Safresh1        $tb->plan( "skip_all" );
75*5759b3d2Safresh1    }
76*5759b3d2Safresh1    ok $tb->is_passing, "Passing with skip_all";
77*5759b3d2Safresh1}
78*5759b3d2Safresh1
79*5759b3d2Safresh1# is_passing() vs done_testing(#)
80*5759b3d2Safresh1{
81*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
82*5759b3d2Safresh1    $tb->ok(1);
83*5759b3d2Safresh1    $tb->done_testing(2);
84*5759b3d2Safresh1    ok !$tb->is_passing, "All tests passed but done_testing() does not match";
85*5759b3d2Safresh1}
86*5759b3d2Safresh1
87*5759b3d2Safresh1
88*5759b3d2Safresh1# is_passing() with no tests run vs done_testing()
89*5759b3d2Safresh1{
90*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
91*5759b3d2Safresh1    $tb->done_testing();
92*5759b3d2Safresh1    ok !$tb->is_passing, "No tests run with done_testing()";
93*5759b3d2Safresh1}
94*5759b3d2Safresh1
95*5759b3d2Safresh1
96*5759b3d2Safresh1# is_passing() with no tests run vs done_testing()
97*5759b3d2Safresh1{
98*5759b3d2Safresh1    my $tb = Test::Builder::NoOutput->create;
99*5759b3d2Safresh1    $tb->ok(1);
100*5759b3d2Safresh1    $tb->done_testing();
101*5759b3d2Safresh1    ok $tb->is_passing, "All tests passed with done_testing()";
102*5759b3d2Safresh1}
103*5759b3d2Safresh1
104*5759b3d2Safresh1
105*5759b3d2Safresh1done_testing();
106