xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/Builder/reset.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
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