1*5759b3d2Safresh1#!/usr/bin/perl -w 2*5759b3d2Safresh1# HARNESS-NO-STREAM 3*5759b3d2Safresh1 4*5759b3d2Safresh1BEGIN { 5*5759b3d2Safresh1 if( $ENV{PERL_CORE} ) { 6*5759b3d2Safresh1 chdir 't'; 7*5759b3d2Safresh1 @INC = ('../lib', 'lib'); 8*5759b3d2Safresh1 } 9*5759b3d2Safresh1 else { 10*5759b3d2Safresh1 unshift @INC, 't/lib'; 11*5759b3d2Safresh1 } 12*5759b3d2Safresh1} 13*5759b3d2Safresh1 14*5759b3d2Safresh1use Test::More; 15*5759b3d2Safresh1use Test::Builder; 16*5759b3d2Safresh1my $Test = Test::Builder->new; 17*5759b3d2Safresh1 18*5759b3d2Safresh1$Test->plan( tests => 9 ); 19*5759b3d2Safresh1$Test->level(0); 20*5759b3d2Safresh1 21*5759b3d2Safresh1my @Expected_Details; 22*5759b3d2Safresh1 23*5759b3d2Safresh1$Test->is_num( scalar $Test->summary(), 0, 'no tests yet, no summary' ); 24*5759b3d2Safresh1push @Expected_Details, { 'ok' => 1, 25*5759b3d2Safresh1 actual_ok => 1, 26*5759b3d2Safresh1 name => 'no tests yet, no summary', 27*5759b3d2Safresh1 type => '', 28*5759b3d2Safresh1 reason => '' 29*5759b3d2Safresh1 }; 30*5759b3d2Safresh1 31*5759b3d2Safresh1# Inline TODO tests will confuse pre 1.20 Test::Harness, so we 32*5759b3d2Safresh1# should just avoid the problem and not print it out. 33*5759b3d2Safresh1my $start_test = $Test->current_test + 1; 34*5759b3d2Safresh1 35*5759b3d2Safresh1my $output = ''; 36*5759b3d2Safresh1$Test->output(\$output); 37*5759b3d2Safresh1$Test->todo_output(\$output); 38*5759b3d2Safresh1 39*5759b3d2Safresh1SKIP: { 40*5759b3d2Safresh1 $Test->skip( 'just testing skip' ); 41*5759b3d2Safresh1} 42*5759b3d2Safresh1push @Expected_Details, { 'ok' => 1, 43*5759b3d2Safresh1 actual_ok => 1, 44*5759b3d2Safresh1 name => '', 45*5759b3d2Safresh1 type => 'skip', 46*5759b3d2Safresh1 reason => 'just testing skip', 47*5759b3d2Safresh1 }; 48*5759b3d2Safresh1 49*5759b3d2Safresh1TODO: { 50*5759b3d2Safresh1 local $TODO = 'i need a todo'; 51*5759b3d2Safresh1 $Test->ok( 0, 'a test to todo!' ); 52*5759b3d2Safresh1 53*5759b3d2Safresh1 push @Expected_Details, { 'ok' => 1, 54*5759b3d2Safresh1 actual_ok => 0, 55*5759b3d2Safresh1 name => 'a test to todo!', 56*5759b3d2Safresh1 type => 'todo', 57*5759b3d2Safresh1 reason => 'i need a todo', 58*5759b3d2Safresh1 }; 59*5759b3d2Safresh1 60*5759b3d2Safresh1 $Test->todo_skip( 'i need both' ); 61*5759b3d2Safresh1} 62*5759b3d2Safresh1push @Expected_Details, { 'ok' => 1, 63*5759b3d2Safresh1 actual_ok => 0, 64*5759b3d2Safresh1 name => '', 65*5759b3d2Safresh1 type => 'todo_skip', 66*5759b3d2Safresh1 reason => 'i need both' 67*5759b3d2Safresh1 }; 68*5759b3d2Safresh1 69*5759b3d2Safresh1for ($start_test..$Test->current_test) { print "ok $_\n" } 70*5759b3d2Safresh1$Test->reset_outputs; 71*5759b3d2Safresh1 72*5759b3d2Safresh1$Test->is_num( scalar $Test->summary(), 4, 'summary' ); 73*5759b3d2Safresh1push @Expected_Details, { 'ok' => 1, 74*5759b3d2Safresh1 actual_ok => 1, 75*5759b3d2Safresh1 name => 'summary', 76*5759b3d2Safresh1 type => '', 77*5759b3d2Safresh1 reason => '', 78*5759b3d2Safresh1 }; 79*5759b3d2Safresh1 80*5759b3d2Safresh1$Test->current_test(6); 81*5759b3d2Safresh1print "ok 6 - current_test incremented\n"; 82*5759b3d2Safresh1push @Expected_Details, { 'ok' => 1, 83*5759b3d2Safresh1 actual_ok => undef, 84*5759b3d2Safresh1 name => undef, 85*5759b3d2Safresh1 type => 'unknown', 86*5759b3d2Safresh1 reason => 'incrementing test number', 87*5759b3d2Safresh1 }; 88*5759b3d2Safresh1 89*5759b3d2Safresh1my @details = $Test->details(); 90*5759b3d2Safresh1$Test->is_num( scalar @details, 6, 91*5759b3d2Safresh1 'details() should return a list of all test details'); 92*5759b3d2Safresh1 93*5759b3d2Safresh1$Test->level(1); 94*5759b3d2Safresh1is_deeply( \@details, \@Expected_Details ); 95*5759b3d2Safresh1 96*5759b3d2Safresh1 97*5759b3d2Safresh1# This test has to come last because it thrashes the test details. 98*5759b3d2Safresh1{ 99*5759b3d2Safresh1 my $curr_test = $Test->current_test; 100*5759b3d2Safresh1 $Test->current_test(4); 101*5759b3d2Safresh1 my @details = $Test->details(); 102*5759b3d2Safresh1 103*5759b3d2Safresh1 $Test->current_test($curr_test); 104*5759b3d2Safresh1 $Test->is_num( scalar @details, 4 ); 105*5759b3d2Safresh1} 106