
The version of Test::More available in CentOS/RHEL 6 doesn't include `subtest`, which we want to use. We can revert this commit once we drop support for CentOS/RHEL 6. The code is licensed under the same terms as Perl 5 itself: https://github.com/Test-More/test-more/blob/v1.302175/LICENSE
144 lines
2.8 KiB
Perl
144 lines
2.8 KiB
Perl
package Test2::EventFacet::Info::Table;
|
|
use strict;
|
|
use warnings;
|
|
|
|
our $VERSION = '1.302175';
|
|
|
|
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 2019 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
|