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