package Log::Dump::Test::Class::Capture;
use strict;
use warnings;
use Test::Classy::Base;
use Log::Dump::Test::ClassUserA;
__PACKAGE__->mk_classdata('capture');
sub initialize {
my $class = shift;
eval { require IO::Capture::Stderr };
$class->skip_this_class('this test requires IO::Capture') if $@;
Log::Dump::Test::ClassUserA->logger(1);
$class->capture( IO::Capture::Stderr->new );
}
sub plain_usage : Tests(2) {
my $class = shift;
my $capture = $class->capture;
$capture->start;
Log::Dump::Test::ClassUserA->log( debug => 'message' );
$capture->stop;
my $captured = join "\n", $capture->read;
like $captured => qr/\[debug\] message/,
$class->message('captured');
unlike $captured => qr{Log.Dump.Class},
$class->message('not from Log::Dump::Class');
}
sub error : Tests(2) {
my $class = shift;
my $capture = $class->capture;
$capture->start;
Log::Dump::Test::ClassUserA->log( error => 'message' );
$capture->stop;
my $captured = join "\n", $capture->read;
like $captured => qr/\[error\] message/,
$class->message('captured');
unlike $captured => qr{Log.Dump.Class},
$class->message('not from Log::Dump::Class');
}
sub fatal : Tests(2) {
my $class = shift;
eval { Log::Dump::Test::ClassUserA->log( fatal => 'message' ) };
like $@ => qr/\[fatal\] message/,
$class->message('captured');
unlike $@ => qr{Log.Dump.Class},
$class->message('not from Log::Dump::Class');
}
1;