summaryrefslogtreecommitdiff
path: root/t/03-short-syntax.t
blob: 2b972bd067ed1b3d3fa772cd4a2aa0da2489d42d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
use strict;
use warnings;
use lib qw(t/lib);
use Test::More;
use Log::Dispatch;
use Log::Dispatch::TestUtil qw(cmp_deeply);
use File::Temp qw( tempdir );

my $tempdir = tempdir( CLEANUP => 1 );

{
    my $emerg_log = File::Spec->catdir( $tempdir, 'emerg.log' );

    # Short syntax
    my $dispatch0 = Log::Dispatch->new(
        outputs => [
            [
                'File', name => 'file', min_level => 'emerg',
                filename => $emerg_log
            ],
            [
                '+Log::Dispatch::Screen', name => 'screen',
                min_level => 'debug'
            ]
        ]
    );

    # Short syntax alternate (2.23)
    my $dispatch1 = Log::Dispatch->new(
        outputs => [
            'File' => {
                name => 'file', min_level => 'emerg', filename => $emerg_log
            },
            '+Log::Dispatch::Screen' =>
                { name => 'screen', min_level => 'debug' }
        ]
    );

    # Long syntax
    my $dispatch2 = Log::Dispatch->new;
    $dispatch2->add(
        Log::Dispatch::File->new(
            name      => 'file',
            min_level => 'emerg',
            filename  => $emerg_log
        )
    );
    $dispatch2->add(
        Log::Dispatch::Screen->new( name => 'screen', min_level => 'debug' )
    );

    cmp_deeply(
        $dispatch0, $dispatch2,
        "created equivalent dispatchers - 0"
    );
    cmp_deeply(
        $dispatch1, $dispatch2,
        "created equivalent dispatchers - 1"
    );
}

{
    eval { Log::Dispatch->new( outputs => ['File'] ) };
    like(
        $@, qr/expected arrayref/,
        "got error for expected inner arrayref"
    );
}
{
    eval { Log::Dispatch->new( outputs => 'File' ) };
    like(
        $@, qr/not one of the allowed types: arrayref/,
        "got error for expected outer arrayref"
    );
}

done_testing();