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