1use strict; 2use warnings; 3use lib qw(t/lib); 4use Test::More; 5use Log::Dispatch; 6use Log::Dispatch::TestUtil qw(cmp_deeply); 7use File::Temp qw( tempdir ); 8 9my $tempdir = tempdir( CLEANUP => 1 ); 10 11{ 12 my $emerg_log = File::Spec->catdir( $tempdir, 'emerg.log' ); 13 14 # Short syntax 15 my $dispatch0 = Log::Dispatch->new( 16 outputs => [ 17 [ 18 'File', name => 'file', min_level => 'emerg', 19 filename => $emerg_log 20 ], 21 [ 22 '+Log::Dispatch::Screen', name => 'screen', 23 min_level => 'debug' 24 ] 25 ] 26 ); 27 28 # Short syntax alternate (2.23) 29 my $dispatch1 = Log::Dispatch->new( 30 outputs => [ 31 'File' => { 32 name => 'file', min_level => 'emerg', filename => $emerg_log 33 }, 34 '+Log::Dispatch::Screen' => 35 { name => 'screen', min_level => 'debug' } 36 ] 37 ); 38 39 # Long syntax 40 my $dispatch2 = Log::Dispatch->new; 41 $dispatch2->add( 42 Log::Dispatch::File->new( 43 name => 'file', 44 min_level => 'emerg', 45 filename => $emerg_log 46 ) 47 ); 48 $dispatch2->add( 49 Log::Dispatch::Screen->new( name => 'screen', min_level => 'debug' ) 50 ); 51 52 cmp_deeply( $dispatch0, $dispatch2, 53 "created equivalent dispatchers - 0" ); 54 cmp_deeply( $dispatch1, $dispatch2, 55 "created equivalent dispatchers - 1" ); 56} 57 58{ 59 eval { Log::Dispatch->new( outputs => ['File'] ) }; 60 like( $@, qr/expected arrayref/, 61 "got error for expected inner arrayref" ); 62} 63{ 64 eval { Log::Dispatch->new( outputs => 'File' ) }; 65 like( $@, qr/not one of the allowed types: arrayref/, 66 "got error for expected outer arrayref" ); 67} 68 69done_testing(); 70