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