Bug 38818: Add diag option to t::lib::Mocks::Logger
This patch adds a diag method to the Mocks::Logger object. This aids in debugging logging errors by simply outputting all log lines to screen in a diag statement. Sponsored-by: PTFS Europe <https://ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
parent
cc0aa072dd
commit
17b2b4cd6e
|
|
@ -72,8 +72,9 @@ sub new {
|
|||
$mocked_logger->mock(
|
||||
$level,
|
||||
sub {
|
||||
my $message = $_[1];
|
||||
push @{ $self->{$level} }, $message;
|
||||
my $message = $_[1];
|
||||
my @caller_info = caller(2);
|
||||
push @{ $self->{$level} }, { message => $message, caller => \@caller_info };
|
||||
return $message;
|
||||
}
|
||||
);
|
||||
|
|
@ -82,6 +83,32 @@ sub new {
|
|||
return $self;
|
||||
}
|
||||
|
||||
=head3 diag
|
||||
|
||||
$logger->diag();
|
||||
|
||||
Method to output all received logs.
|
||||
|
||||
=cut
|
||||
|
||||
sub diag {
|
||||
my ($self) = @_;
|
||||
my $tb = $CLASS->builder;
|
||||
|
||||
foreach my $level ( levels() ) {
|
||||
$tb->diag("$level:");
|
||||
if ( @{ $self->{$level} } ) {
|
||||
foreach my $log_entry ( @{ $self->{$level} } ) {
|
||||
my ( $package, $filename, $line ) = @{ $log_entry->{caller} };
|
||||
$tb->diag( " \"" . $log_entry->{message} . "\" at $filename line $line" );
|
||||
}
|
||||
} else {
|
||||
$tb->diag(" (No $level messages)");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
=head3 debug_is
|
||||
|
||||
$logger->debug_is($expected);
|
||||
|
|
@ -311,9 +338,9 @@ sub generic_is {
|
|||
|
||||
local $Test::Builder::Level = $Test::Builder::Level + 1;
|
||||
|
||||
my $string = shift @{ $self->{$level} };
|
||||
$string //= '';
|
||||
my $tb = $CLASS->builder;
|
||||
my $log = shift @{ $self->{$level} };
|
||||
my $string = defined($log) ? $log->{message} : '';
|
||||
my $tb = $CLASS->builder;
|
||||
return $tb->is_eq( $string, $expect, $name );
|
||||
}
|
||||
|
||||
|
|
@ -328,9 +355,9 @@ sub generic_like {
|
|||
|
||||
local $Test::Builder::Level = $Test::Builder::Level + 1;
|
||||
|
||||
my $string = shift @{ $self->{$level} };
|
||||
$string //= '';
|
||||
my $tb = $CLASS->builder;
|
||||
my $log = shift @{ $self->{$level} };
|
||||
my $string = defined($log) ? $log->{message} : '';
|
||||
my $tb = $CLASS->builder;
|
||||
return $tb->like( $string, $expect, $name );
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue