1use strict; 2use warnings; 3 4use Test::More 0.88; 5 6use Config; 7 8BEGIN { 9 plan skip_all => 'This test only runs on threaded perls' 10 unless $Config{usethreads}; 11} 12 13use Test::Needs { 14 'Sys::Syslog' => '0.28', 15}; 16 17use threads; 18use threads::shared; 19use Log::Dispatch; 20use Log::Dispatch::Syslog; 21 22## no critic (TestingAndDebugging::ProhibitNoWarnings) 23no warnings 'redefine', 'once'; 24 25my @sock; 26local *Sys::Syslog::setlogsock = sub { @sock = @_ }; 27 28local *Sys::Syslog::openlog = sub { return 1 }; 29local *Sys::Syslog::closelog = sub { return 1 }; 30 31my @log; 32local *Sys::Syslog::syslog = sub { push @log, [@_] }; 33 34SKIP: 35{ 36 @log = (); 37 38 my $dispatch = Log::Dispatch->new; 39 $dispatch->add( 40 Log::Dispatch::Syslog->new( 41 name => 'syslog', 42 min_level => 'debug', 43 lock => 1, 44 ) 45 ); 46 47 $dispatch->info('Foo thread'); 48 49 is_deeply( 50 \@log, 51 [ [ 'INFO', 'Foo thread' ] ], 52 'passed message to syslog (with thread lock)' 53 ); 54} 55 56done_testing(); 57