1*5759b3d2Safresh1#!/usr/bin/perl -w 2*5759b3d2Safresh1# HARNESS-NO-STREAM 3*5759b3d2Safresh1 4*5759b3d2Safresh1# Test Test::Builder->reset; 5*5759b3d2Safresh1 6*5759b3d2Safresh1BEGIN { 7*5759b3d2Safresh1 if( $ENV{PERL_CORE} ) { 8*5759b3d2Safresh1 chdir 't'; 9*5759b3d2Safresh1 @INC = ('../lib', 'lib'); 10*5759b3d2Safresh1 } 11*5759b3d2Safresh1 else { 12*5759b3d2Safresh1 unshift @INC, 't/lib'; 13*5759b3d2Safresh1 } 14*5759b3d2Safresh1} 15*5759b3d2Safresh1chdir 't'; 16*5759b3d2Safresh1 17*5759b3d2Safresh1 18*5759b3d2Safresh1use Test::Builder; 19*5759b3d2Safresh1my $Test = Test::Builder->new; 20*5759b3d2Safresh1my $tb = Test::Builder->create; 21*5759b3d2Safresh1 22*5759b3d2Safresh1# We'll need this later to know the outputs were reset 23*5759b3d2Safresh1my %Original_Output; 24*5759b3d2Safresh1$Original_Output{$_} = $tb->$_ for qw(output failure_output todo_output); 25*5759b3d2Safresh1 26*5759b3d2Safresh1# Alter the state of Test::Builder as much as possible. 27*5759b3d2Safresh1my $output = ''; 28*5759b3d2Safresh1$tb->output(\$output); 29*5759b3d2Safresh1$tb->failure_output(\$output); 30*5759b3d2Safresh1$tb->todo_output(\$output); 31*5759b3d2Safresh1 32*5759b3d2Safresh1$tb->plan(tests => 14); 33*5759b3d2Safresh1$tb->level(0); 34*5759b3d2Safresh1 35*5759b3d2Safresh1$tb->ok(1, "Running a test to alter TB's state"); 36*5759b3d2Safresh1 37*5759b3d2Safresh1# This won't print since we just sent output off to oblivion. 38*5759b3d2Safresh1$tb->ok(0, "And a failure for fun"); 39*5759b3d2Safresh1 40*5759b3d2Safresh1$Test::Builder::Level = 3; 41*5759b3d2Safresh1 42*5759b3d2Safresh1$tb->exported_to('Foofer'); 43*5759b3d2Safresh1 44*5759b3d2Safresh1$tb->use_numbers(0); 45*5759b3d2Safresh1$tb->no_header(1); 46*5759b3d2Safresh1$tb->no_ending(1); 47*5759b3d2Safresh1 48*5759b3d2Safresh1$tb->done_testing; # make sure done_testing gets reset 49*5759b3d2Safresh1 50*5759b3d2Safresh1# Now reset it. 51*5759b3d2Safresh1$tb->reset; 52*5759b3d2Safresh1 53*5759b3d2Safresh1 54*5759b3d2Safresh1# Test the state of the reset builder 55*5759b3d2Safresh1$Test->ok( !defined $tb->exported_to, 'exported_to' ); 56*5759b3d2Safresh1$Test->is_eq( $tb->expected_tests, 0, 'expected_tests' ); 57*5759b3d2Safresh1$Test->is_eq( $tb->level, 1, 'level' ); 58*5759b3d2Safresh1$Test->is_eq( $tb->use_numbers, 1, 'use_numbers' ); 59*5759b3d2Safresh1$Test->is_eq( $tb->no_header, 0, 'no_header' ); 60*5759b3d2Safresh1$Test->is_eq( $tb->no_ending, 0, 'no_ending' ); 61*5759b3d2Safresh1$Test->is_eq( $tb->current_test, 0, 'current_test' ); 62*5759b3d2Safresh1$Test->is_eq( scalar $tb->summary, 0, 'summary' ); 63*5759b3d2Safresh1$Test->is_eq( scalar $tb->details, 0, 'details' ); 64*5759b3d2Safresh1$Test->is_eq( fileno $tb->output, 65*5759b3d2Safresh1 fileno $Original_Output{output}, 'output' ); 66*5759b3d2Safresh1$Test->is_eq( fileno $tb->failure_output, 67*5759b3d2Safresh1 fileno $Original_Output{failure_output}, 'failure_output' ); 68*5759b3d2Safresh1$Test->is_eq( fileno $tb->todo_output, 69*5759b3d2Safresh1 fileno $Original_Output{todo_output}, 'todo_output' ); 70*5759b3d2Safresh1 71*5759b3d2Safresh1# The reset Test::Builder will take over from here. 72*5759b3d2Safresh1$Test->no_ending(1); 73*5759b3d2Safresh1 74*5759b3d2Safresh1 75*5759b3d2Safresh1$tb->current_test($Test->current_test); 76*5759b3d2Safresh1$tb->level(0); 77*5759b3d2Safresh1$tb->ok(1, 'final test to make sure output was reset'); 78*5759b3d2Safresh1 79*5759b3d2Safresh1$tb->done_testing; 80