#!/usr/bin/perl use strict; use warnings; # Test scope, setup a basic test. # Then enter a local scope and add new overrides # Then leave scope and make sure it reverts back use Test::More tests => 15; use Log::Scrubber qw($SCRUBBER scrubber_enabled); END { unlink "test.out"; } _my_test('Nothing should be modified','Nothing should be modified'); $SIG{__WARN__} = sub { (CORE::warn 'w1: '.$_[0]); }; _my_test('Basic global override no scrubbing','w1: Basic global override no scrubbing'); Log::Scrubber::scrubber_add_scrubber({'Basic'=>'Multiple','override no'=> 'override with'}); Log::Scrubber::scrubber_add_signal('WARN'); $SCRUBBER = 1; is(scrubber_enabled(), 1); _my_test('Basic global override no scrubbing','w1: Multiple global override with scrubbing'); $SCRUBBER = 0; is(scrubber_enabled(), 0); _my_test('Basic global override no scrubbing','w1: Basic global override no scrubbing'); $SCRUBBER = 1; is(scrubber_enabled(), 1); for (1) { note "ENTER LOCAL SCOPE\n"; local $SCRUBBER; is(scrubber_enabled(), 1); Log::Scrubber::scrubber_add_scrubber({'global'=> 'local'}); _my_test('Basic global override no scrubbing','w1: Multiple local override with scrubbing'); $SCRUBBER = 0; is(scrubber_enabled(), 0); _my_test('Basic global override no scrubbing','w1: Basic global override no scrubbing'); note "LEAVE LOCAL SCOPE\n"; } note "LEFT LOCAL SCOPE\n"; is(scrubber_enabled(), 1); _my_test('Basic global override no scrubbing','w1: Multiple global override with scrubbing'); $SCRUBBER = 0; is(scrubber_enabled(), 0); _my_test('Basic global override no scrubbing','w1: Basic global override no scrubbing'); #!/usr/bin/perl sub _read { open FILE, "test.out"; my $ret = join('', ); close FILE; $ret =~ s/[\s\r\n]+$//; return $ret; } sub _setup { open STDERR, ">test.out"; select((select(STDERR), $|++)[0]); } sub _my_test { my ($warn_text,$expected_result) = @_; eval { _setup; warn($warn_text."\n"); }; my $result = _read; is ($result, $expected_result, "warn: ".$result); }