force-load Moo::HandleMoose::_TypeMap
[scpubgit/Object-Remote.git] / t / logger.t
1 use strictures 1;
2 use Test::More;
3 use Sys::Hostname;
4
5 $ENV{OBJECT_REMOTE_TEST_LOGGER} = 1;
6
7 use Object::Remote::Logging qw(:log router arg_levels);
8 use Object::Remote::Logging::Logger;
9 require 't/lib/ORFeedbackLogger.pm';
10
11 my $level_names = [qw(test1 test2 test3 test4 test5)];
12 my $logger = Object::Remote::Logging::Logger->new(
13   level_names => $level_names, min_level => 'test1'
14 );
15
16 isa_ok($logger, 'Object::Remote::Logging::Logger');
17 is($logger->max_level, 'test5', 'Logger sets max_level correctly');
18 is($logger->format, '%l: %s', 'Default format is correct');
19 foreach(@$level_names) {
20   is($logger->_level_active->{$_}, 1, "Level $_ is active");
21 }
22
23 $logger = Object::Remote::Logging::Logger->new(
24   level_names => $level_names, min_level => 'test3'
25 );
26
27 foreach(qw(test1 test2)) {
28   is($logger->_level_active->{$_}, 0, "Level $_ is inactive");
29 }
30
31 foreach(qw(test3 test4 test5)) {
32   is($logger->_level_active->{$_}, 1, "Level $_ is active");
33 }
34
35 is(render_log("%%")->[0], "%\n", "Percent renders correctly");
36 is(render_log("%n")->[0], "\n", "New line renders correctly");
37 is(render_log("%p")->[0], "main\n", "Package renders correctly");
38 ok(defined render_log("%t")->[0], "There was a time value");
39 is(render_log("%r")->[0], "local\n", "Remote info renders correctly");
40 is(render_log("%s")->[0], "Test message\n", "Log message renders correctly");
41 is(render_log("%l")->[0], "info\n", "Log level renders correctly");
42 is(render_log("%c")->[0], "Object::Remote::Logging\n", "Log controller renders correctly");
43 is(render_log("%p")->[0], "main\n", "Log generating package renders correctly");
44 is(render_log("%m")->[0], "render_log\n", "Log generating method renders correctly");
45 is(render_log("%f")->[0], __FILE__ . "\n", "Log generating filename renders correctly");
46 my $ret = render_log("%i");
47 is($ret->[0], $ret->[1] . "\n", "Log generating line number renders correctly");
48 is(render_log("%h")->[0], hostname() . "\n", "Log generating hostname renders correctly");
49 is(render_log("%P")->[0], "$$\n", "Log generating process id renders correctly");
50
51 done_testing;
52
53 sub render_log {
54   my ($format)= @_;
55   $logger = ORFeedbackLogger->new(
56     format => $format, level_names => arg_levels(), min_level => 'info');
57   my $selector= sub { $logger };
58   router->connect($selector, 1);
59   log_info { "Test message" };
60   return [$logger->feedback_output, __LINE__ - 1];
61 }