1 ### Log::Message test suite ###
3 if( $ENV{PERL_CORE} ) {
4 chdir '../lib/Log/Message' if -d '../lib/Log/Message';
5 unshift @INC, '../../..';
9 BEGIN { chdir 't' if -d 't' }
13 use lib qw[../lib to_load];
14 use Test::More tests => 34;
17 for my $pkg ( qw[ Log::Message Log::Message::Config
18 Log::Message::Item Log::Message::Handlers]
20 use_ok( $pkg ) or diag "'$pkg' not found. Dying";
25 my $log = Log::Message->new( private => 0 );
26 is( $log->{STACK}, $Log::Message::STACK, q[Using global stack] );
29 ### test using private stack
31 my $log = Log::Message->new( private => 1 );
32 isnt( $log->{STACK}, $Log::Message::STACK, q[Using private stack] );
34 $log->store('foo'); $log->store('bar');
38 my @list = $log->retrieve();
40 ok( @list == 2, q[Stored 2 messages] );
43 $log->store('zot'); $log->store('quux');
46 my @list = $log->retrieve( amount => 3 );
48 ok( @list == 3, q[Retrieving 3 messages] );
52 is( $log->first->message, 'foo', q[ Retrieving first message] );
53 is( $log->final->message, 'quux', q[ Retrieving final message] );
57 package Log::Message::Handlers;
59 sub test { return shift }
60 sub test2 { shift; return @_ }
72 ok( $log->retrieve( message => qr/baz/ ),
73 q[ Retrieving based on message] );
74 ok( $log->retrieve( tag => qr/TAG/ ),
75 q[ Retrieving based on tag] );
76 ok( $log->retrieve( level => qr/test/ ),
77 q[ Retrieving based on level] );
80 my $item = $log->retrieve( chrono => 0 );
83 ok( $item, q[Retrieving item] );
84 is( $item->parent, $log, q[ Item reference to parent] );
85 is( $item->message, 'baz', q[ Item message stored] );
86 is( $item->id, 4, q[ Item id stored] );
87 is( $item->tag, 'MY TAG', q[ Item tag stored] );
88 is( $item->level, 'test', q[ Item level stored] );
92 ### shortmess is very different from 5.6.1 => 5.8, so let's
93 ### just check that it is filled.
94 ok( $item->shortmess, q[Item shortmess stored] );
95 like( $item->shortmess, qr/\w+/,
96 q[ Item shortmess stored properly]
99 ok( $item->longmess, q[Item longmess stored] );
100 like( $item->longmess, qr/Log::Message::store/s,
101 q[ Item longmess stored properly]
104 my $t = scalar localtime;
105 $t =~ /(\w+ \w+ \d+)/;
107 like( $item->when, qr/$1/, q[Item timestamp stored] );
112 my @a = $item->test2(1,2,3);
114 is( $item, $i, q[Item handler check] );
115 is_deeply( $item, $i, q[ Item handler deep check] );
116 is_deeply( \@a, [1,2,3], q[ Item extra argument check] );
120 ok( $item->remove, q[Removing item from stack] );
121 ok( (!grep{ $item eq $_ } $log->retrieve),
122 q[ Item removed from stack] );
127 ok( @{$log->{STACK}} == 0, q[Flushing stack] );
132 { my $log = Log::Message->new( private => 1 );
136 { ### dont make it print
138 local $SIG{__WARN__} = sub { $warnings .= "@_" };
140 my $rv = $log->store();
141 ok( !$rv, q[Logging empty message failed] );
142 like( $warnings, qr/message/, q[ Spotted the error] );
146 { ### dont make it print
148 local $SIG{__WARN__} = sub { $warnings .= "@_" };
150 ### XXX whitebox test!
151 local $Params::Check::VERBOSE = 1; # so the warnings are emitted
152 local $Params::Check::VERBOSE = 1; # so the warnings are emitted
154 my $rv = $log->retrieve( frobnitz => $$ );
155 ok( !$rv, q[Retrieval with bogus args] );
156 like( $warnings, qr/not a valid key/,
157 qq[ Spotted the error] );