1 2use strict; 3 4package OLObj; 5 6use overload 7 '0+' => \&numelic, 8 '""' => \&stringfy; 9 10sub new { 11 my ($class, $value) = @_; 12 bless \$value, $class; 13}; 14 15sub numelic { 16 my $self = shift; 17 $$self; 18} 19 20sub stringfy { 21 my $self = shift; 22 qq!"$$self"!; 23} 24 25package Foo; 26 27sub new { 28 my ($class, $value) = @_; 29 bless \$value, $class; 30}; 31 32package main; 33 34use Test::More; 35 36BEGIN { use_ok 'Log::Minimal' } 37 38use Log::Minimal; 39 40local $ENV{LM_DEBUG} = 0; 41 42{ 43 local $Log::Minimal::PRINT = sub { join(" ", @_) }; 44 like( critf("crit%d", 1), qr/crit1/ ); 45 like( warnf("warn"), qr/warn/ ); 46 like( infof('in%fo'), qr/in%fo/ ); 47 ok( !debugf("debug") ); 48 local $ENV{LM_DEBUG} = 1; 49 like( debugf("debu\t\r\ng"), qr/debu\\t\\r\\ng/ ); 50} 51 52{ 53 local $Log::Minimal::PRINT = sub { join(" ", @_) }; 54 like( critff("crit%d",1), qr/crit1/ ); 55 like( warnff("warn"), qr/warn/ ); 56 like( infoff('in%fo'), qr/in%fo/ ); 57 ok( !debugff("debug") ); 58 local $ENV{LM_DEBUG} = 1; 59 like( debugff("debu\t\r\ng"), qr/debu\\t\\r\\ng/ ); 60} 61 62{ 63 local $Log::Minimal::PRINT = sub { join(" ", @_) }; 64 local $Log::Minimal::ESCAPE_WHITESPACE = 0; 65 like( critf("debu\t\r\ng"), qr/debu\t\r\ng/ ); 66} 67 68use t::LogTest; 69 70{ 71 local $Log::Minimal::PRINT = sub { join(" ", @_) }; 72 like t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/; 73 74 local $Log::Minimal::TRACE_LEVEL = $Log::Minimal::TRACE_LEVEL + 1; 75 unlike t::LogTest::logtest("crit%d",1), qr/LogTest\.pm/; 76} 77 78{ 79 like( ddf(\"foo"), qr/\\'foo'/ ); 80 like( ddf("foo\r\nbar"), qr/foo\r\nbar/ ); 81 is( ddf({"a" => 1, "b" => 2}), "{'a' => 1,'b' => 2}" ); 82 83 84 local $Log::Minimal::PRINT = sub { join(" ", @_) }; 85 local $Log::Minimal::AUTODUMP = 1; 86 my $ol = OLObj->new("foo"); 87 like( warnf("%s",$ol), qr/"foo"/); 88 like( warnf( $ol ), qr/"foo"/); 89 my $ol2 = OLObj->new(200); 90 like( warnf("%f",$ol2), qr/200\.00/); 91 my $foo = Foo->new("foo"); 92 like( warnf($foo), qr/bless.+foo.+Foo/); 93} 94 95 96{ 97 local $Log::Minimal::PRINT = sub { join( "", @_) }; 98 local $Log::Minimal::LOG_LEVEL = "MUTE"; 99 ok( ! critf("crit") ); 100 101 local $Log::Minimal::LOG_LEVEL = "CRITICAL"; 102 ok( critf("crit") ); 103 ok( ! warnf("warn") ); 104 105 local $Log::Minimal::LOG_LEVEL = "WARN"; 106 ok( critf("crit") ); 107 ok( warnf("warn") ); 108 ok( !debugf("debug") ); 109 110 local $Log::Minimal::LOG_LEVEL = "INFO"; 111 ok( critf("crit") ); 112 ok( warnf("warn") ); 113 ok( infof("info") ); 114 ok( !debugf("debug") ); 115 116 local $Log::Minimal::LOG_LEVEL = "DEBUG"; 117 ok( !debugf("debug") ); 118 119 local $ENV{LM_DEBUG} = 1; 120 ok( debugf("debug") ); 121 122 local $Log::Minimal::LOG_LEVEL = "INFO"; 123 ok( !debugf("debug") ); 124 125 local $Log::Minimal::LOG_LEVEL = "DEBUG"; 126 ok( debugf("debug") ); 127 128 local $Log::Minimal::LOG_LEVEL = "MUTE"; 129 ok( !debugf("debug") ); 130} 131 132done_testing(); 133 134