xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Ok.pm (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
15759b3d2Safresh1package Test2::Event::Ok;
25759b3d2Safresh1use strict;
35759b3d2Safresh1use warnings;
45759b3d2Safresh1
5*5486feefSafresh1our $VERSION = '1.302199';
65759b3d2Safresh1
75759b3d2Safresh1
85759b3d2Safresh1BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
95759b3d2Safresh1use Test2::Util::HashBase qw{
105759b3d2Safresh1    pass effective_pass name todo
115759b3d2Safresh1};
125759b3d2Safresh1
135759b3d2Safresh1sub init {
145759b3d2Safresh1    my $self = shift;
155759b3d2Safresh1
165759b3d2Safresh1    # Do not store objects here, only true or false
175759b3d2Safresh1    $self->{+PASS} = $self->{+PASS} ? 1 : 0;
185759b3d2Safresh1    $self->{+EFFECTIVE_PASS} = $self->{+PASS} || (defined($self->{+TODO}) ? 1 : 0);
195759b3d2Safresh1}
205759b3d2Safresh1
215759b3d2Safresh1{
225759b3d2Safresh1    no warnings 'redefine';
235759b3d2Safresh1    sub set_todo {
245759b3d2Safresh1        my $self = shift;
255759b3d2Safresh1        my ($todo) = @_;
265759b3d2Safresh1        $self->{+TODO} = $todo;
275759b3d2Safresh1        $self->{+EFFECTIVE_PASS} = defined($todo) ? 1 : $self->{+PASS};
285759b3d2Safresh1    }
295759b3d2Safresh1}
305759b3d2Safresh1
315759b3d2Safresh1sub increments_count { 1 };
325759b3d2Safresh1
335759b3d2Safresh1sub causes_fail { !$_[0]->{+EFFECTIVE_PASS} }
345759b3d2Safresh1
355759b3d2Safresh1sub summary {
365759b3d2Safresh1    my $self = shift;
375759b3d2Safresh1
385759b3d2Safresh1    my $name = $self->{+NAME} || "Nameless Assertion";
395759b3d2Safresh1
405759b3d2Safresh1    my $todo = $self->{+TODO};
415759b3d2Safresh1    if ($todo) {
425759b3d2Safresh1        $name .= " (TODO: $todo)";
435759b3d2Safresh1    }
445759b3d2Safresh1    elsif (defined $todo) {
455759b3d2Safresh1        $name .= " (TODO)"
465759b3d2Safresh1    }
475759b3d2Safresh1
485759b3d2Safresh1    return $name;
495759b3d2Safresh1}
505759b3d2Safresh1
515759b3d2Safresh1sub extra_amnesty {
525759b3d2Safresh1    my $self = shift;
535759b3d2Safresh1    return unless defined($self->{+TODO}) || ($self->{+EFFECTIVE_PASS} && !$self->{+PASS});
545759b3d2Safresh1    return {
555759b3d2Safresh1        tag       => 'TODO',
565759b3d2Safresh1        details   => $self->{+TODO},
575759b3d2Safresh1    };
585759b3d2Safresh1}
595759b3d2Safresh1
605759b3d2Safresh1sub facet_data {
615759b3d2Safresh1    my $self = shift;
625759b3d2Safresh1
635759b3d2Safresh1    my $out = $self->common_facet_data;
645759b3d2Safresh1
655759b3d2Safresh1    $out->{assert}  = {
665759b3d2Safresh1        no_debug => 1,                # Legacy behavior
675759b3d2Safresh1        pass     => $self->{+PASS},
685759b3d2Safresh1        details  => $self->{+NAME},
695759b3d2Safresh1    };
705759b3d2Safresh1
71*5486feefSafresh1    if (my @extra_amnesty = $self->extra_amnesty) {
72256a93a4Safresh1        my %seen;
73256a93a4Safresh1
74256a93a4Safresh1        # It is possible the extra amnesty can be a duplicate, so filter it.
75256a93a4Safresh1        $out->{amnesty} = [
76256a93a4Safresh1            grep { !$seen{defined($_->{tag}) ? $_->{tag} : ''}->{defined($_->{details}) ? $_->{details} : ''}++ }
77*5486feefSafresh1                @extra_amnesty,
78256a93a4Safresh1                @{$out->{amnesty}},
79256a93a4Safresh1        ];
805759b3d2Safresh1    }
815759b3d2Safresh1
825759b3d2Safresh1    return $out;
835759b3d2Safresh1}
845759b3d2Safresh1
855759b3d2Safresh11;
865759b3d2Safresh1
875759b3d2Safresh1__END__
885759b3d2Safresh1
895759b3d2Safresh1=pod
905759b3d2Safresh1
915759b3d2Safresh1=encoding UTF-8
925759b3d2Safresh1
935759b3d2Safresh1=head1 NAME
945759b3d2Safresh1
955759b3d2Safresh1Test2::Event::Ok - Ok event type
965759b3d2Safresh1
975759b3d2Safresh1=head1 DESCRIPTION
985759b3d2Safresh1
995759b3d2Safresh1Ok events are generated whenever you run a test that produces a result.
1005759b3d2Safresh1Examples are C<ok()>, and C<is()>.
1015759b3d2Safresh1
1025759b3d2Safresh1=head1 SYNOPSIS
1035759b3d2Safresh1
1045759b3d2Safresh1    use Test2::API qw/context/;
1055759b3d2Safresh1    use Test2::Event::Ok;
1065759b3d2Safresh1
1075759b3d2Safresh1    my $ctx = context();
1085759b3d2Safresh1    my $event = $ctx->ok($bool, $name, \@diag);
1095759b3d2Safresh1
1105759b3d2Safresh1or:
1115759b3d2Safresh1
1125759b3d2Safresh1    my $ctx   = context();
1135759b3d2Safresh1    my $event = $ctx->send_event(
1145759b3d2Safresh1        'Ok',
1155759b3d2Safresh1        pass => $bool,
1165759b3d2Safresh1        name => $name,
1175759b3d2Safresh1    );
1185759b3d2Safresh1
1195759b3d2Safresh1=head1 ACCESSORS
1205759b3d2Safresh1
1215759b3d2Safresh1=over 4
1225759b3d2Safresh1
1235759b3d2Safresh1=item $rb = $e->pass
1245759b3d2Safresh1
1255759b3d2Safresh1The original true/false value of whatever was passed into the event (but
1265759b3d2Safresh1reduced down to 1 or 0).
1275759b3d2Safresh1
1285759b3d2Safresh1=item $name = $e->name
1295759b3d2Safresh1
1305759b3d2Safresh1Name of the test.
1315759b3d2Safresh1
1325759b3d2Safresh1=item $b = $e->effective_pass
1335759b3d2Safresh1
1345759b3d2Safresh1This is the true/false value of the test after TODO and similar modifiers are
1355759b3d2Safresh1taken into account.
1365759b3d2Safresh1
1375759b3d2Safresh1=back
1385759b3d2Safresh1
1395759b3d2Safresh1=head1 SOURCE
1405759b3d2Safresh1
1415759b3d2Safresh1The source code repository for Test2 can be found at
142*5486feefSafresh1L<https://github.com/Test-More/test-more/>.
1435759b3d2Safresh1
1445759b3d2Safresh1=head1 MAINTAINERS
1455759b3d2Safresh1
1465759b3d2Safresh1=over 4
1475759b3d2Safresh1
1485759b3d2Safresh1=item Chad Granum E<lt>exodist@cpan.orgE<gt>
1495759b3d2Safresh1
1505759b3d2Safresh1=back
1515759b3d2Safresh1
1525759b3d2Safresh1=head1 AUTHORS
1535759b3d2Safresh1
1545759b3d2Safresh1=over 4
1555759b3d2Safresh1
1565759b3d2Safresh1=item Chad Granum E<lt>exodist@cpan.orgE<gt>
1575759b3d2Safresh1
1585759b3d2Safresh1=back
1595759b3d2Safresh1
1605759b3d2Safresh1=head1 COPYRIGHT
1615759b3d2Safresh1
162256a93a4Safresh1Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
1635759b3d2Safresh1
1645759b3d2Safresh1This program is free software; you can redistribute it and/or
1655759b3d2Safresh1modify it under the same terms as Perl itself.
1665759b3d2Safresh1
167*5486feefSafresh1See L<https://dev.perl.org/licenses/>
1685759b3d2Safresh1
1695759b3d2Safresh1=cut
170