# # Test for default stderr logging in multiple packages # use strict; use Test::Simple tests => 10; use Log::Channel; ###################################################################### # redirect stderr so we can scan and validate the output close STDERR; my $stderrfile = "/tmp/logchan$$.stderr"; open STDERR, ">$stderrfile" or die; ###################################################################### package One; my $log1 = new Log::Channel; sub msg { $log1->(@_) } sub log (@) { msg @_; } ###################################################################### package Two; my $log2 = new Log::Channel; sub msg { $log2->(@_) } sub log (@) { msg @_; } ###################################################################### package main; One::log "message 01"; # should go to stderr Two::log "message 2"; # should go to stderr disable Log::Channel "One"; One::log "message 3"; # no Two::log "message 4"; # yes disable Log::Channel "Two"; One::log "message 5"; # no Two::log "message 6"; # no enable Log::Channel "One"; One::log "message 7"; # yes Two::log "message 8"; # no enable Log::Channel "Two"; One::log "message 9"; # yes Two::log "message 10"; # yes ###################################################################### # Now check the log files close STDERR; open (LINES, "<$stderrfile") or die $!; my @lines = ; close LINES; ok ((scalar grep { /message 01/ } @lines) == 1); ok ((scalar grep { /message 2/ } @lines) == 1); ok ((scalar grep { /message 3/ } @lines) == 0); ok ((scalar grep { /message 4/ } @lines) == 1); ok ((scalar grep { /message 5/ } @lines) == 0); ok ((scalar grep { /message 6/ } @lines) == 0); ok ((scalar grep { /message 7/ } @lines) == 1); ok ((scalar grep { /message 8/ } @lines) == 0); ok ((scalar grep { /message 9/ } @lines) == 1); ok ((scalar grep { /message 10/ } @lines) == 1); ###################################################################### # Clean up unlink $stderrfile;