Synch with CPAN Test-Simple 1.302140.
[perl.git] / cpan / Test-Simple / lib / Test / Builder / Formatter.pm
1 package Test::Builder::Formatter;
2 use strict;
3 use warnings;
4
5 our $VERSION = '1.302140';
6
7 BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
8
9 use Test2::Util::HashBase qw/no_header no_diag/;
10
11 BEGIN {
12     *OUT_STD = Test2::Formatter::TAP->can('OUT_STD');
13     *OUT_ERR = Test2::Formatter::TAP->can('OUT_ERR');
14
15     my $todo = OUT_ERR() + 1;
16     *OUT_TODO = sub() { $todo };
17 }
18
19 sub init {
20     my $self = shift;
21     $self->SUPER::init(@_);
22     $self->{+HANDLES}->[OUT_TODO] = $self->{+HANDLES}->[OUT_STD];
23 }
24
25 sub plan_tap {
26     my ($self, $f) = @_;
27
28     return if $self->{+NO_HEADER};
29     return $self->SUPER::plan_tap($f);
30 }
31
32 sub debug_tap {
33     my ($self, $f, $num) = @_;
34     return if $self->{+NO_DIAG};
35     my @out = $self->SUPER::debug_tap($f, $num);
36     $self->redirect(\@out) if @out && $f->{about}->{package} eq 'Test::Builder::TodoDiag';
37     return @out;
38 }
39
40 sub info_tap {
41     my ($self, $f) = @_;
42     return if $self->{+NO_DIAG};
43     my @out = $self->SUPER::info_tap($f);
44     $self->redirect(\@out) if @out && $f->{about}->{package} eq 'Test::Builder::TodoDiag';
45     return @out;
46 }
47
48 sub redirect {
49     my ($self, $out) = @_;
50     $_->[0] = OUT_TODO for @$out;
51 }
52
53 sub no_subtest_space { 1 }
54
55 1;
56
57 __END__
58
59 =pod
60
61 =encoding UTF-8
62
63 =head1 NAME
64
65 Test::Builder::Formatter - Test::Builder subclass of Test2::Formatter::TAP
66
67 =head1 DESCRIPTION
68
69 This is what takes events and turns them into TAP.
70
71 =head1 SYNOPSIS
72
73     use Test::Builder; # Loads Test::Builder::Formatter for you
74
75 =head1 SOURCE
76
77 The source code repository for Test2 can be found at
78 F<http://github.com/Test-More/test-more/>.
79
80 =head1 MAINTAINERS
81
82 =over 4
83
84 =item Chad Granum E<lt>exodist@cpan.orgE<gt>
85
86 =back
87
88 =head1 AUTHORS
89
90 =over 4
91
92 =item Chad Granum E<lt>exodist@cpan.orgE<gt>
93
94 =back
95
96 =head1 COPYRIGHT
97
98 Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>.
99
100 This program is free software; you can redistribute it and/or
101 modify it under the same terms as Perl itself.
102
103 See F<http://dev.perl.org/licenses/>
104
105 =cut