use Test::More; use Log::Log4perl; use strict; use Data::Dumper; use File::Spec; our $no_XMLDOM; BEGIN { my $dvrq = $Log::Log4perl::DOM_VERSION_REQUIRED; eval { require XML::DOM; XML::DOM->VERSION($dvrq); my $dver = XML::DOM->VERSION($dvrq); require XML::Parser; my $pver = XML::Parser->VERSION; if ($pver >= 2.32 && $dver <= 1.42){ print STDERR "Your version of XML::DOM ($dver) is incompatible with your version of XML::Parser ($pver). You should upgrade your XML::DOM to 1.43 or greater.\n"; die 'skip tests'; } }; if ($@) { plan skip_all => "only with XML::DOM > $dvrq"; }else{ plan tests => 2; } } if ($no_XMLDOM){ ok(1); exit(0); } my $xmlconfig = < EOL #Log::Log4perl::init(\$config); my $xmldata = Log::Log4perl::Config::config_read(\$xmlconfig); my $propsconfig = <catfile('t','compare.pl'); ok(Compare($xmldata, $propsdata)) || do { if ($dump_available) { print STDERR "got: ",Data::Dump::dump($xmldata),"\n"; print STDERR "================\n"; print STDERR "expected: ", Data::Dump::dump($propsdata),"\n"; } }; # =======================================================\ # test variable substitutions # more brute force $xmlconfig = <<'EOL'; EOL $ENV{rootthreshold} = 'debug'; $ENV{A1} = 'A1'; $ENV{A2} = 'A2'; $ENV{testbfr} = 'Log::Log4perl::Appender::TestBuffer'; $ENV{simplelayout} = 'Log::Log4perl::Layout::SimpleLayout'; $ENV{appthreshold} = 'Threshold'; $ENV{appthreshlevel} = 'error'; $ENV{convpatt} = 'ConversionPattern'; $ENV{thepatt} = '%d %4r [%t] %-5p %c %t - %m%n'; $ENV{pfile} = 'File'; $ENV{pfileval} = 't/tmp/DOMtest'; $ENV{abcd} = 'a.b.c.d'; $ENV{abcd_add} = 'false'; $ENV{abcd_level} = 'warn'; $ENV{a1_appenderref} = 'A1'; my $varsubsdata = Log::Log4perl::Config::config_read(\$xmlconfig); ok(Compare($varsubsdata, $xmldata)) || do { if ($dump_available) { print STDERR "got: ",Data::Dump::dump($varsubsdata),"\n"; print STDERR "================\n"; print STDERR "expected: ", Data::Dump::dump($xmldata),"\n"; } };