The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- perl -*-

BEGIN {
    # it seems unholy to do this, but perl Core does..
    chdir 't' if -d 't';
    use lib '../lib';
    $ENV{PERL5LIB} = '../lib';    # so children will see it too
}

use Test::More (tests => 12);

diag ("test a non-default initstr") if $ENV{HARNESS_VERBOSE};

$!=0;
# hide stderr, not helpful
system 'perl -w tinitstr.pl 2> out.tinitstr.stderr';

ok (!$@, 'no $@ error');
ok (!$!, "no \$! error: $!");
ok (!$?, 'exited with 0');

my ($logout,$logcover);
my ($flogout,$flogcover) = ("out.tinitstr","out.tinitstr.cover");
{
    local $/ = undef;
    my $fh;
    open ($fh, $flogout);
    $logout = <$fh>;
    open ($fh, $flogcover);
    $logcover = <$fh>;
}

ok ($logout, "got something on stdout");
ok ($logcover, "got something on logcover");

##########
diag ("following tests look for expected logging output, with line numbers")
    if $ENV{HARNESS_VERBOSE};

like ($logout, qr/main.main.warn.32: 1/, 'found warn.31, 1st call');
like ($logout, qr/main.main.info.33: 2/, 'found info.32, 2nd call');
like ($logout, qr/main.foo.warn.41: 1, /, 'found warn.40, 1 arg ok');
like ($logout, qr/\QA.bar.warn.51: 5, [
  1,
  2,
  3,
  4,
  5
]/ms, 'found warn.50, with arrayref Dump');

##########

diag ("now test contents of coverage report")
    if $ENV{HARNESS_VERBOSE};

like ($logcover, qr/(\QLog.Log4perl.AutoCategorize.END.info.\E\d+\Q: Seen Log Events:, {
  'Log.Log4perl.AutoCategorize.END.info.\E\d+\Q' => 1,
  'log4perl.category.A.bar.debug.52' => '-50',
  'log4perl.category.A.bar.warn.51' => 50,
  'log4perl.category.main.foo.warn.41' => 25,
  'log4perl.category.main.main.info.33' => 5,
  'log4perl.category.main.main.warn.32' => 5
}\E)/,
      "OK - Seen report in t/$flogcover");

like ($logcover, qr/(\QLog.Log4perl.AutoCategorize.END.info.\E\d+\Q: UnSeen Log Events:, {}\E)/,
      "OK - Un-Seen report in t/$flogcover");

like ($logcover, qr/(\QLog.Log4perl.AutoCategorize.END.info.\E\d+\Q: cat2data:, {
  'A.bar.debug.52' => 'debug_00003',
  'A.bar.warn.51' => 'warn_00002',
  'main.foo.warn.41' => 'warn_00001',
  'main.main.info.33' => 'info_00005',
  'main.main.warn.32' => 'warn_00004'
}\E)/,
      "OK - cat-2-munged data in t/$flogcover");

__END__