Initial Commit
This commit is contained in:
92
database/perl/lib/Test2/EventFacet/About.pm
Normal file
92
database/perl/lib/Test2/EventFacet/About.pm
Normal file
@@ -0,0 +1,92 @@
|
||||
package Test2::EventFacet::About;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -package -no_display -uuid -eid };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::About - Facet with event details.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet has information about the event, such as event package.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $about->{details}
|
||||
|
||||
=item $string = $about->details()
|
||||
|
||||
Summary about the event.
|
||||
|
||||
=item $package = $about->{package}
|
||||
|
||||
=item $package = $about->package()
|
||||
|
||||
Event package name.
|
||||
|
||||
=item $bool = $about->{no_display}
|
||||
|
||||
=item $bool = $about->no_display()
|
||||
|
||||
True if the event should be skipped by formatters.
|
||||
|
||||
=item $uuid = $about->{uuid}
|
||||
|
||||
=item $uuid = $about->uuid()
|
||||
|
||||
Will be set to a uuid if uuid tagging was enabled.
|
||||
|
||||
=item $uuid = $about->{eid}
|
||||
|
||||
=item $uuid = $about->eid()
|
||||
|
||||
A unique (for the test job) identifier for the event.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
91
database/perl/lib/Test2/EventFacet/Amnesty.pm
Normal file
91
database/perl/lib/Test2/EventFacet/Amnesty.pm
Normal file
@@ -0,0 +1,91 @@
|
||||
package Test2::EventFacet::Amnesty;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
sub is_list { 1 }
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -tag -inherited };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Amnesty - Facet for assertion amnesty.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This package represents what is expected in units of amnesty.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
This facet appears in a list instead of being a single item.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $amnesty->{details}
|
||||
|
||||
=item $string = $amnesty->details()
|
||||
|
||||
Human readable explanation of why amnesty was granted.
|
||||
|
||||
Example: I<Not implemented yet, will fix>
|
||||
|
||||
=item $short_string = $amnesty->{tag}
|
||||
|
||||
=item $short_string = $amnesty->tag()
|
||||
|
||||
Short string (usually 10 characters or less, not enforced, but may be truncated
|
||||
by renderers) categorizing the amnesty.
|
||||
|
||||
=item $bool = $amnesty->{inherited}
|
||||
|
||||
=item $bool = $amnesty->inherited()
|
||||
|
||||
This will be true if the amnesty was granted to a parent event and inherited by
|
||||
this event, which is a child, such as an assertion within a subtest that is
|
||||
marked todo.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
93
database/perl/lib/Test2/EventFacet/Assert.pm
Normal file
93
database/perl/lib/Test2/EventFacet/Assert.pm
Normal file
@@ -0,0 +1,93 @@
|
||||
package Test2::EventFacet::Assert;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -pass -no_debug -number };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Assert - Facet representing an assertion.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The assertion facet is provided by any event representing an assertion that was
|
||||
made.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $assert->{details}
|
||||
|
||||
=item $string = $assert->details()
|
||||
|
||||
Human readable description of the assertion.
|
||||
|
||||
=item $bool = $assert->{pass}
|
||||
|
||||
=item $bool = $assert->pass()
|
||||
|
||||
True if the assertion passed.
|
||||
|
||||
=item $bool = $assert->{no_debug}
|
||||
|
||||
=item $bool = $assert->no_debug()
|
||||
|
||||
Set this to true if you have provided custom diagnostics and do not want the
|
||||
defaults to be displayed.
|
||||
|
||||
=item $int = $assert->{number}
|
||||
|
||||
=item $int = $assert->number()
|
||||
|
||||
(Optional) assertion number. This may be omitted or ignored. This is usually
|
||||
only useful when parsing/processing TAP.
|
||||
|
||||
B<Note>: This is not set by the Test2 system, assertion number is not known
|
||||
until AFTER the assertion has been processed. This attribute is part of the
|
||||
spec only for harnesses.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
107
database/perl/lib/Test2/EventFacet/Control.pm
Normal file
107
database/perl/lib/Test2/EventFacet/Control.pm
Normal file
@@ -0,0 +1,107 @@
|
||||
package Test2::EventFacet::Control;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding -phase };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Control - Facet for hub actions and behaviors.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet is used when the event needs to give instructions to the Test2
|
||||
internals.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $control->{details}
|
||||
|
||||
=item $string = $control->details()
|
||||
|
||||
Human readable explanation for the special behavior.
|
||||
|
||||
=item $bool = $control->{global}
|
||||
|
||||
=item $bool = $control->global()
|
||||
|
||||
True if the event is global in nature and should be seen by all hubs.
|
||||
|
||||
=item $exit = $control->{terminate}
|
||||
|
||||
=item $exit = $control->terminate()
|
||||
|
||||
Defined if the test should immediately exit, the value is the exit code and may
|
||||
be C<0>.
|
||||
|
||||
=item $bool = $control->{halt}
|
||||
|
||||
=item $bool = $control->halt()
|
||||
|
||||
True if all testing should be halted immediately.
|
||||
|
||||
=item $bool = $control->{has_callback}
|
||||
|
||||
=item $bool = $control->has_callback()
|
||||
|
||||
True if the C<callback($hub)> method on the event should be called.
|
||||
|
||||
=item $encoding = $control->{encoding}
|
||||
|
||||
=item $encoding = $control->encoding()
|
||||
|
||||
This can be used to change the encoding from this event onward.
|
||||
|
||||
=item $phase = $control->{phase}
|
||||
|
||||
=item $phase = $control->phase()
|
||||
|
||||
Used to signal that a phase change has occurred. Currently only the perl END
|
||||
phase is signaled.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
93
database/perl/lib/Test2/EventFacet/Error.pm
Normal file
93
database/perl/lib/Test2/EventFacet/Error.pm
Normal file
@@ -0,0 +1,93 @@
|
||||
package Test2::EventFacet::Error;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
sub facet_key { 'errors' }
|
||||
sub is_list { 1 }
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -tag -fail };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Error - Facet for errors that need to be shown.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet is used when an event needs to convey errors.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
This facet has the hash key C<'errors'>, and is a list of facets instead of a
|
||||
single item.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $error->{details}
|
||||
|
||||
=item $string = $error->details()
|
||||
|
||||
Explanation of the error, or the error itself (such as an exception). In perl
|
||||
exceptions may be blessed objects, so this field may contain a blessed object.
|
||||
|
||||
=item $short_string = $error->{tag}
|
||||
|
||||
=item $short_string = $error->tag()
|
||||
|
||||
Short tag to categorize the error. This is usually 10 characters or less,
|
||||
formatters may truncate longer tags.
|
||||
|
||||
=item $bool = $error->{fail}
|
||||
|
||||
=item $bool = $error->fail()
|
||||
|
||||
Not all errors are fatal, some are displayed having already been handled. Set
|
||||
this to true if you want the error to cause the test to fail. Without this the
|
||||
error is simply a diagnostics message that has no effect on the overall
|
||||
pass/fail result.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
109
database/perl/lib/Test2/EventFacet/Hub.pm
Normal file
109
database/perl/lib/Test2/EventFacet/Hub.pm
Normal file
@@ -0,0 +1,109 @@
|
||||
package Test2::EventFacet::Hub;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
sub is_list { 1 }
|
||||
sub facet_key { 'hubs' }
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{-pid -tid -hid -nested -buffered -uuid -ipc};
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Hub - Facet for the hubs an event passes through.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
These are a record of the hubs an event passes through. Most recent hub is the
|
||||
first one in the list.
|
||||
|
||||
=head1 FACET FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $trace->{details}
|
||||
|
||||
=item $string = $trace->details()
|
||||
|
||||
The hub class or subclass
|
||||
|
||||
=item $int = $trace->{pid}
|
||||
|
||||
=item $int = $trace->pid()
|
||||
|
||||
PID of the hub this event was sent to.
|
||||
|
||||
=item $int = $trace->{tid}
|
||||
|
||||
=item $int = $trace->tid()
|
||||
|
||||
The thread ID of the hub the event was sent to.
|
||||
|
||||
=item $hid = $trace->{hid}
|
||||
|
||||
=item $hid = $trace->hid()
|
||||
|
||||
The ID of the hub that the event was send to.
|
||||
|
||||
=item $huuid = $trace->{huuid}
|
||||
|
||||
=item $huuid = $trace->huuid()
|
||||
|
||||
The UUID of the hub that the event was sent to.
|
||||
|
||||
=item $int = $trace->{nested}
|
||||
|
||||
=item $int = $trace->nested()
|
||||
|
||||
How deeply nested the hub was.
|
||||
|
||||
=item $bool = $trace->{buffered}
|
||||
|
||||
=item $bool = $trace->buffered()
|
||||
|
||||
True if the event was buffered and not sent to the formatter independent of a
|
||||
parent (This should never be set when nested is C<0> or C<undef>).
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
132
database/perl/lib/Test2/EventFacet/Info.pm
Normal file
132
database/perl/lib/Test2/EventFacet/Info.pm
Normal file
@@ -0,0 +1,132 @@
|
||||
package Test2::EventFacet::Info;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
sub is_list { 1 }
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{-tag -debug -important -table};
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Info - Facet for information a developer might care about.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet represents messages intended for humans that will help them either
|
||||
understand a result, or diagnose a failure.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
This facet appears in a list instead of being a single item.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string_or_structure = $info->{details}
|
||||
|
||||
=item $string_or_structure = $info->details()
|
||||
|
||||
Human readable string or data structure, this is the information to display.
|
||||
Formatters are free to render the structures however they please. This may
|
||||
contain a blessed object.
|
||||
|
||||
If the C<table> attribute (see below) is set then a renderer may choose to
|
||||
display the table instead of the details.
|
||||
|
||||
=item $structure = $info->{table}
|
||||
|
||||
=item $structure = $info->table()
|
||||
|
||||
If the data the C<info> facet needs to convey can be represented as a table
|
||||
then the data may be placed in this attribute in a more raw form for better
|
||||
display. The data must also be represented in the C<details> attribute for
|
||||
renderers which do not support rendering tables directly.
|
||||
|
||||
The table structure:
|
||||
|
||||
my %table = {
|
||||
header => [ 'column 1 header', 'column 2 header', ... ], # Optional
|
||||
|
||||
rows => [
|
||||
['row 1 column 1', 'row 1, column 2', ... ],
|
||||
['row 2 column 1', 'row 2, column 2', ... ],
|
||||
...
|
||||
],
|
||||
|
||||
# Allow the renderer to hide empty columns when true, Optional
|
||||
collapse => $BOOL,
|
||||
|
||||
# List by name or number columns that should never be collapsed
|
||||
no_collapse => \@LIST,
|
||||
}
|
||||
|
||||
=item $short_string = $info->{tag}
|
||||
|
||||
=item $short_string = $info->tag()
|
||||
|
||||
Short tag to categorize the info. This is usually 10 characters or less,
|
||||
formatters may truncate longer tags.
|
||||
|
||||
=item $bool = $info->{debug}
|
||||
|
||||
=item $bool = $info->debug()
|
||||
|
||||
Set this to true if the message is critical, or explains a failure. This is
|
||||
info that should be displayed by formatters even in less-verbose modes.
|
||||
|
||||
When false the information is not considered critical and may not be rendered
|
||||
in less-verbose modes.
|
||||
|
||||
=item $bool = $info->{important}
|
||||
|
||||
=item $bool = $info->important
|
||||
|
||||
This should be set for non debug messages that are still important enough to
|
||||
show when a formatter is in quiet mode. A formatter should send these to STDOUT
|
||||
not STDERR, but should show them even in non-verbose mode.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
144
database/perl/lib/Test2/EventFacet/Info/Table.pm
Normal file
144
database/perl/lib/Test2/EventFacet/Info/Table.pm
Normal file
@@ -0,0 +1,144 @@
|
||||
package Test2::EventFacet::Info::Table;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
use Carp qw/confess/;
|
||||
|
||||
use Test2::Util::HashBase qw{-header -rows -collapse -no_collapse -as_string};
|
||||
|
||||
sub init {
|
||||
my $self = shift;
|
||||
|
||||
confess "Table may not be empty" unless ref($self->{+ROWS}) eq 'ARRAY' && @{$self->{+ROWS}};
|
||||
|
||||
$self->{+AS_STRING} ||= '<TABLE NOT DISPLAYED>';
|
||||
}
|
||||
|
||||
sub as_hash { my $out = +{%{$_[0]}}; delete $out->{as_string}; $out }
|
||||
|
||||
sub info_args {
|
||||
my $self = shift;
|
||||
|
||||
my $hash = $self->as_hash;
|
||||
my $desc = $self->as_string;
|
||||
|
||||
return (table => $hash, details => $desc);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Info::Table - Intermediary representation of a table.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Intermediary representation of a table for use in specialized
|
||||
L<Test::API::Context> methods which generate L<Test2::EventFacet::Info> facets.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test2::EventFacet::Info::Table;
|
||||
use Test2::API qw/context/;
|
||||
|
||||
sub my_tool {
|
||||
my $ctx = context();
|
||||
|
||||
...
|
||||
|
||||
$ctx->fail(
|
||||
$name,
|
||||
"failure diag message",
|
||||
Test2::EventFacet::Info::Table->new(
|
||||
# Required
|
||||
rows => [['a', 'b'], ['c', 'd'], ...],
|
||||
|
||||
# Strongly Recommended
|
||||
as_string => "... string to print when table cannot be rendered ...",
|
||||
|
||||
# Optional
|
||||
header => ['col1', 'col2'],
|
||||
collapse => $bool,
|
||||
no_collapse => ['col1', ...],
|
||||
),
|
||||
);
|
||||
|
||||
...
|
||||
|
||||
$ctx->release;
|
||||
}
|
||||
|
||||
my_tool();
|
||||
|
||||
=head1 ATTRIBUTES
|
||||
|
||||
=over 4
|
||||
|
||||
=item $header_aref = $t->header()
|
||||
|
||||
=item $rows_aref = $t->rows()
|
||||
|
||||
=item $bool = $t->collapse()
|
||||
|
||||
=item $aref = $t->no_collapse()
|
||||
|
||||
The above are all directly tied to the table hashref structure described in
|
||||
L<Test2::EventFacet::Info>.
|
||||
|
||||
=item $str = $t->as_string()
|
||||
|
||||
This returns the string form of the table if it was set, otherwise it returns
|
||||
the string C<< "<TABLE NOT DISPLAYED>" >>.
|
||||
|
||||
=item $href = $t->as_hash()
|
||||
|
||||
This returns the data structure used for tables by L<Test2::EventFacet::Info>.
|
||||
|
||||
=item %args = $t->info_args()
|
||||
|
||||
This returns the arguments that should be used to construct the proper
|
||||
L<Test2::EventFacet::Info> structure.
|
||||
|
||||
return (table => $t->as_hash(), details => $t->as_string());
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
104
database/perl/lib/Test2/EventFacet/Meta.pm
Normal file
104
database/perl/lib/Test2/EventFacet/Meta.pm
Normal file
@@ -0,0 +1,104 @@
|
||||
package Test2::EventFacet::Meta;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use vars qw/$AUTOLOAD/;
|
||||
|
||||
# replace set_details
|
||||
{
|
||||
no warnings 'redefine';
|
||||
sub set_details { $_[0]->{'set_details'} }
|
||||
}
|
||||
|
||||
sub can {
|
||||
my $self = shift;
|
||||
my ($name) = @_;
|
||||
|
||||
my $existing = $self->SUPER::can($name);
|
||||
return $existing if $existing;
|
||||
|
||||
# Only vivify when called on an instance, do not vivify for a class. There
|
||||
# are a lot of magic class methods used in things like serialization (or
|
||||
# the forks.pm module) which cause problems when vivified.
|
||||
return undef unless ref($self);
|
||||
|
||||
my $sub = sub { $_[0]->{$name} };
|
||||
{
|
||||
no strict 'refs';
|
||||
*$name = $sub;
|
||||
}
|
||||
|
||||
return $sub;
|
||||
}
|
||||
|
||||
sub AUTOLOAD {
|
||||
my $name = $AUTOLOAD;
|
||||
$name =~ s/^.*:://g;
|
||||
my $sub = $_[0]->can($name);
|
||||
goto &$sub;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Meta - Facet for meta-data
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet can contain any random meta-data that has been attached to the
|
||||
event.
|
||||
|
||||
=head1 METHODS AND FIELDS
|
||||
|
||||
Any/all fields and accessors are autovivified into existence. There is no way
|
||||
to know what metadata may be added, so any is allowed.
|
||||
|
||||
=over 4
|
||||
|
||||
=item $anything = $meta->{anything}
|
||||
|
||||
=item $anything = $meta->anything()
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
98
database/perl/lib/Test2/EventFacet/Parent.pm
Normal file
98
database/perl/lib/Test2/EventFacet/Parent.pm
Normal file
@@ -0,0 +1,98 @@
|
||||
package Test2::EventFacet::Parent;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
use Carp qw/confess/;
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -hid -children -buffered };
|
||||
|
||||
sub init {
|
||||
confess "Attribute 'hid' must be set"
|
||||
unless defined $_[0]->{+HID};
|
||||
|
||||
$_[0]->{+CHILDREN} ||= [];
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Parent - Facet for events contains other events
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet is used when an event contains other events, such as a subtest.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $parent->{details}
|
||||
|
||||
=item $string = $parent->details()
|
||||
|
||||
Human readable description of the event.
|
||||
|
||||
=item $hid = $parent->{hid}
|
||||
|
||||
=item $hid = $parent->hid()
|
||||
|
||||
Hub ID of the hub that is represented in the parent-child relationship.
|
||||
|
||||
=item $arrayref = $parent->{children}
|
||||
|
||||
=item $arrayref = $parent->children()
|
||||
|
||||
Arrayref containing the facet-data hashes of events nested under this one.
|
||||
|
||||
I<To get the actual events you need to get them from the parent event directly>
|
||||
|
||||
=item $bool = $parent->{buffered}
|
||||
|
||||
=item $bool = $parent->buffered()
|
||||
|
||||
True if the subtest is buffered (meaning the formatter has probably not seen
|
||||
them yet).
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
94
database/perl/lib/Test2/EventFacet/Plan.pm
Normal file
94
database/perl/lib/Test2/EventFacet/Plan.pm
Normal file
@@ -0,0 +1,94 @@
|
||||
package Test2::EventFacet::Plan;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -count -skip -none };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Plan - Facet for setting the plan
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Events use this facet when they need to set the plan.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $plan->{details}
|
||||
|
||||
=item $string = $plan->details()
|
||||
|
||||
Human readable explanation for the plan being set. This is normally not
|
||||
rendered by most formatters except when the C<skip> field is also set.
|
||||
|
||||
=item $positive_int = $plan->{count}
|
||||
|
||||
=item $positive_int = $plan->count()
|
||||
|
||||
Set the number of expected assertions. This should usually be set to C<0> when
|
||||
C<skip> or C<none> are also set.
|
||||
|
||||
=item $bool = $plan->{skip}
|
||||
|
||||
=item $bool = $plan->skip()
|
||||
|
||||
When true the entire test should be skipped. This is usually paired with an
|
||||
explanation in the C<details> field, and a C<control> facet that has
|
||||
C<terminate> set to C<0>.
|
||||
|
||||
=item $bool = $plan->{none}
|
||||
|
||||
=item $bool = $plan->none()
|
||||
|
||||
This is mainly used by legacy L<Test::Builder> tests which set the plan to C<no
|
||||
plan>, a construct that predates the much better C<done_testing()>.
|
||||
|
||||
If you are using this in non-legacy code you may need to reconsider the course
|
||||
of your life, maybe a hermitage would suite you?
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
106
database/perl/lib/Test2/EventFacet/Render.pm
Normal file
106
database/perl/lib/Test2/EventFacet/Render.pm
Normal file
@@ -0,0 +1,106 @@
|
||||
package Test2::EventFacet::Render;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
sub is_list { 1 }
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
use Test2::Util::HashBase qw{ -tag -facet -mode };
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Render - Facet that dictates how to render an event.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This facet is used to dictate how the event should be rendered by the standard
|
||||
test2 rendering tools. If this facet is present then ONLY what is specified by
|
||||
it will be rendered. It is assumed that anything important or note-worthy will
|
||||
be present here, no other facets will be considered for rendering/display.
|
||||
|
||||
This facet is a list type, you can add as many items as needed.
|
||||
|
||||
=head1 FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $render->[#]->{details}
|
||||
|
||||
=item $string = $render->[#]->details()
|
||||
|
||||
Human readable text for display.
|
||||
|
||||
=item $string = $render->[#]->{tag}
|
||||
|
||||
=item $string = $render->[#]->tag()
|
||||
|
||||
Tag that should prefix/identify the main text.
|
||||
|
||||
=item $string = $render->[#]->{facet}
|
||||
|
||||
=item $string = $render->[#]->facet()
|
||||
|
||||
Optional, if the display text was generated from another facet this should
|
||||
state what facet it was.
|
||||
|
||||
=item $mode = $render->[#]->{mode}
|
||||
|
||||
=item $mode = $render->[#]->mode()
|
||||
|
||||
=over 4
|
||||
|
||||
=item calculated
|
||||
|
||||
Calculated means the facet was generated from another facet. Calculated facets
|
||||
may be cleared and regenerated whenever the event state changes.
|
||||
|
||||
=item replace
|
||||
|
||||
Replace means the facet is intended to replace the normal rendering of the
|
||||
event.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
306
database/perl/lib/Test2/EventFacet/Trace.pm
Normal file
306
database/perl/lib/Test2/EventFacet/Trace.pm
Normal file
@@ -0,0 +1,306 @@
|
||||
package Test2::EventFacet::Trace;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.302183';
|
||||
|
||||
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
|
||||
|
||||
use Test2::Util qw/get_tid pkg_to_file gen_uid/;
|
||||
use Carp qw/confess/;
|
||||
|
||||
use Test2::Util::HashBase qw{^frame ^pid ^tid ^cid -hid -nested details -buffered -uuid -huuid <full_caller};
|
||||
|
||||
{
|
||||
no warnings 'once';
|
||||
*DETAIL = \&DETAILS;
|
||||
*detail = \&details;
|
||||
*set_detail = \&set_details;
|
||||
}
|
||||
|
||||
sub init {
|
||||
confess "The 'frame' attribute is required"
|
||||
unless $_[0]->{+FRAME};
|
||||
|
||||
$_[0]->{+DETAILS} = delete $_[0]->{detail} if $_[0]->{detail};
|
||||
|
||||
unless (defined($_[0]->{+PID}) || defined($_[0]->{+TID}) || defined($_[0]->{+CID})) {
|
||||
$_[0]->{+PID} = $$ unless defined $_[0]->{+PID};
|
||||
$_[0]->{+TID} = get_tid() unless defined $_[0]->{+TID};
|
||||
}
|
||||
}
|
||||
|
||||
sub snapshot {
|
||||
my ($orig, @override) = @_;
|
||||
bless {%$orig, @override}, __PACKAGE__;
|
||||
}
|
||||
|
||||
sub signature {
|
||||
my $self = shift;
|
||||
|
||||
# Signature is only valid if all of these fields are defined, there is no
|
||||
# signature if any is missing. '0' is ok, but '' is not.
|
||||
return join ':' => map { (defined($_) && length($_)) ? $_ : return undef } (
|
||||
$self->{+CID},
|
||||
$self->{+PID},
|
||||
$self->{+TID},
|
||||
$self->{+FRAME}->[1],
|
||||
$self->{+FRAME}->[2],
|
||||
);
|
||||
}
|
||||
|
||||
sub debug {
|
||||
my $self = shift;
|
||||
return $self->{+DETAILS} if $self->{+DETAILS};
|
||||
my ($pkg, $file, $line) = $self->call;
|
||||
return "at $file line $line";
|
||||
}
|
||||
|
||||
sub alert {
|
||||
my $self = shift;
|
||||
my ($msg) = @_;
|
||||
warn $msg . ' ' . $self->debug . ".\n";
|
||||
}
|
||||
|
||||
sub throw {
|
||||
my $self = shift;
|
||||
my ($msg) = @_;
|
||||
die $msg . ' ' . $self->debug . ".\n";
|
||||
}
|
||||
|
||||
sub call { @{$_[0]->{+FRAME}} }
|
||||
|
||||
sub full_call { @{$_[0]->{+FULL_CALLER}} }
|
||||
|
||||
sub package { $_[0]->{+FRAME}->[0] }
|
||||
sub file { $_[0]->{+FRAME}->[1] }
|
||||
sub line { $_[0]->{+FRAME}->[2] }
|
||||
sub subname { $_[0]->{+FRAME}->[3] }
|
||||
|
||||
sub warning_bits { $_[0]->{+FULL_CALLER} ? $_[0]->{+FULL_CALLER}->[9] : undef }
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test2::EventFacet::Trace - Debug information for events
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The L<Test2::API::Context> object, as well as all L<Test2::Event> types need to
|
||||
have access to information about where they were created. This object
|
||||
represents that information.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test2::EventFacet::Trace;
|
||||
|
||||
my $trace = Test2::EventFacet::Trace->new(
|
||||
frame => [$package, $file, $line, $subname],
|
||||
);
|
||||
|
||||
=head1 FACET FIELDS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $string = $trace->{details}
|
||||
|
||||
=item $string = $trace->details()
|
||||
|
||||
Used as a custom trace message that will be used INSTEAD of
|
||||
C<< at <FILE> line <LINE> >> when calling C<< $trace->debug >>.
|
||||
|
||||
=item $frame = $trace->{frame}
|
||||
|
||||
=item $frame = $trace->frame()
|
||||
|
||||
Get the call frame arrayref.
|
||||
|
||||
[$package, $file, $line, $subname]
|
||||
|
||||
=item $int = $trace->{pid}
|
||||
|
||||
=item $int = $trace->pid()
|
||||
|
||||
The process ID in which the event was generated.
|
||||
|
||||
=item $int = $trace->{tid}
|
||||
|
||||
=item $int = $trace->tid()
|
||||
|
||||
The thread ID in which the event was generated.
|
||||
|
||||
=item $id = $trace->{cid}
|
||||
|
||||
=item $id = $trace->cid()
|
||||
|
||||
The ID of the context that was used to create the event.
|
||||
|
||||
=item $uuid = $trace->{uuid}
|
||||
|
||||
=item $uuid = $trace->uuid()
|
||||
|
||||
The UUID of the context that was used to create the event. (If uuid tagging was
|
||||
enabled)
|
||||
|
||||
=item ($pkg, $file, $line, $subname) = $trace->call
|
||||
|
||||
Get the basic call info as a list.
|
||||
|
||||
=item @caller = $trace->full_call
|
||||
|
||||
Get the full caller(N) results.
|
||||
|
||||
=item $warning_bits = $trace->warning_bits
|
||||
|
||||
Get index 9 from the full caller info. This is the warnings_bits field.
|
||||
|
||||
The value of this is not portable across perl versions or even processes.
|
||||
However it can be used in the process that generated it to reproduce the
|
||||
warnings settings in a new scope.
|
||||
|
||||
eval <<EOT;
|
||||
BEGIN { ${^WARNING_BITS} = $trace->warning_bits };
|
||||
... context's warning settings apply here ...
|
||||
EOT
|
||||
|
||||
=back
|
||||
|
||||
=head2 DISCOURAGED HUB RELATED FIELDS
|
||||
|
||||
These fields were not always set properly by tools. These are B<MOSTLY>
|
||||
deprecated by the L<Test2::EventFacet::Hub> facets. These fields are not
|
||||
required, and may only reflect the hub that was current when the event was
|
||||
created, which is not necessarily the same as the hub the event was sent
|
||||
through.
|
||||
|
||||
Some tools did do a good job setting these to the correct hub, but you cannot
|
||||
always rely on that. Use the 'hubs' facet list instead.
|
||||
|
||||
=over 4
|
||||
|
||||
=item $hid = $trace->{hid}
|
||||
|
||||
=item $hid = $trace->hid()
|
||||
|
||||
The ID of the hub that was current when the event was created.
|
||||
|
||||
=item $huuid = $trace->{huuid}
|
||||
|
||||
=item $huuid = $trace->huuid()
|
||||
|
||||
The UUID of the hub that was current when the event was created. (If uuid
|
||||
tagging was enabled).
|
||||
|
||||
=item $int = $trace->{nested}
|
||||
|
||||
=item $int = $trace->nested()
|
||||
|
||||
How deeply nested the event is.
|
||||
|
||||
=item $bool = $trace->{buffered}
|
||||
|
||||
=item $bool = $trace->buffered()
|
||||
|
||||
True if the event was buffered and not sent to the formatter independent of a
|
||||
parent (This should never be set when nested is C<0> or C<undef>).
|
||||
|
||||
=back
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
B<Note:> All facet frames are also methods.
|
||||
|
||||
=over 4
|
||||
|
||||
=item $trace->set_detail($msg)
|
||||
|
||||
=item $msg = $trace->detail
|
||||
|
||||
Used to get/set a custom trace message that will be used INSTEAD of
|
||||
C<< at <FILE> line <LINE> >> when calling C<< $trace->debug >>.
|
||||
|
||||
C<detail()> is an alias to the C<details> facet field for backwards
|
||||
compatibility.
|
||||
|
||||
=item $str = $trace->debug
|
||||
|
||||
Typically returns the string C<< at <FILE> line <LINE> >>. If C<detail> is set
|
||||
then its value will be returned instead.
|
||||
|
||||
=item $trace->alert($MESSAGE)
|
||||
|
||||
This issues a warning at the frame (filename and line number where
|
||||
errors should be reported).
|
||||
|
||||
=item $trace->throw($MESSAGE)
|
||||
|
||||
This throws an exception at the frame (filename and line number where
|
||||
errors should be reported).
|
||||
|
||||
=item ($package, $file, $line, $subname) = $trace->call()
|
||||
|
||||
Get the caller details for the debug-info. This is where errors should be
|
||||
reported.
|
||||
|
||||
=item $pkg = $trace->package
|
||||
|
||||
Get the debug-info package.
|
||||
|
||||
=item $file = $trace->file
|
||||
|
||||
Get the debug-info filename.
|
||||
|
||||
=item $line = $trace->line
|
||||
|
||||
Get the debug-info line number.
|
||||
|
||||
=item $subname = $trace->subname
|
||||
|
||||
Get the debug-info subroutine name.
|
||||
|
||||
=item $sig = trace->signature
|
||||
|
||||
Get a signature string that identifies this trace. This is used to check if
|
||||
multiple events are related. The signature includes pid, tid, file, line
|
||||
number, and the cid.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
The source code repository for Test2 can be found at
|
||||
F<http://github.com/Test-More/test-more/>.
|
||||
|
||||
=head1 MAINTAINERS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the same terms as Perl itself.
|
||||
|
||||
See F<http://dev.perl.org/licenses/>
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user