The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# vim: filetype=perl :
use strict;
use warnings;

use Test::More tests => 4;    # last test to print
use Log::Log4perl::Tiny qw( :easy get_logger );

use lib 't';
use TestLLT qw( set_logger log_is );
use CarpingModule;

my @lines;
Log::Log4perl->easy_init(
   {
      format => '%m%n',
      level  => $INFO,
      fh     => sub { push @lines, $_[0] },
   }
);
my $logger = get_logger();
set_logger($logger);

my (@warnings, @dies);
$SIG{__WARN__} = sub {
   push @warnings, @_;
};
$SIG{__DIE__} = sub {
   push @dies, @_;
};
eval { CarpingModule::somesub(); };
my $file = __FILE__;

is scalar(@warnings), 1, 'one warning was generated';
like $warnings[0], qr{(?mxs:
      \A sent\ from\ somesub\ in\ CarpingModule
         \ at .* $file \ line\ \d+\.?
      \s*\z
      )}, 'warning has the right message';

is scalar(@dies), 1, 'one die was generated';
like $dies[0], qr{(?mxs:
      \A sent\ from\ anothersub\ in\ CarpingModule
         \ at .* $file \ line\ \d+\.?
      \s*\z
      )}, 'warning has the right message';

done_testing();