X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=t%2FLogger.t;h=2b63c8efa536955d5304d9d0e78378e8fb58ba64;hb=2f1dffe1d5bbbb3deb6c92d881e2a8025ee8b672;hp=a375b20ec1f5beed991b931a95bd67ac9610a98e;hpb=c339b5e4ccf86575c9fa9d6a184db9cd05a9c56f;p=srvgit diff --git a/t/Logger.t b/t/Logger.t old mode 100644 new mode 100755 index a375b20ec1..2b63c8efa5 --- a/t/Logger.t +++ b/t/Logger.t @@ -1,44 +1,82 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + use Modern::Perl; use C4::Context; use Koha::Logger; +use t::lib::Mocks; use File::Temp qw/tempfile/; -use Test::MockModule; use Test::More tests => 1; +use Test::Warn; +use Test::Exception; subtest 'Test01 -- Simple tests for Koha::Logger' => sub { - plan tests => 6; - test01(); -}; + plan tests => 10; -sub test01 { - my $mContext = new Test::MockModule('C4::Context'); - $mContext->mock( 'config', sub { return; } ); + my $ret; + t::lib::Mocks::mock_config('log4perl_conf', undef); - my $logger= Koha::Logger->get; - is( exists $logger->{logger}, '', 'No log4perl config'); - my $d= $logger->debug('Message 1'); - is( $d, undef, 'No return value for debug call'); + throws_ok { Koha::Logger->get } qr/Configuration not defined/, 'Logger did not init correctly without config'; my $log = mytempfile(); - my $conf = mytempfile( <<"HERE" + my $config_file = mytempfile( <<"HERE" log4perl.logger.intranet = WARN, INTRANET log4perl.appender.INTRANET=Log::Log4perl::Appender::File log4perl.appender.INTRANET.filename=$log log4perl.appender.INTRANET.mode=append log4perl.appender.INTRANET.layout=PatternLayout -log4perl.appender.INTRANET.layout.ConversionPattern=[%d] [%p] %m %l %n +log4perl.appender.INTRANET.layout.ConversionPattern=[%d] [%p] %m %l%n HERE ); - $mContext->mock( 'config', sub { return $conf; } ); - $logger= Koha::Logger->get({ interface => 'intranet' }); + + t::lib::Mocks::mock_config('log4perl_conf', $config_file); + + my $login = getlogin || getpwuid($<) || q{}; + + SKIP: { + skip "Running as root user", 1 if $login eq 'root'; + + system("chmod 400 $log"); + throws_ok { Koha::Logger->get } qr/Permission denied/, 'Logger did not init correctly without permission'; + system("chmod 700 $log"); + } + + my $logger = Koha::Logger->get( { interface => 'intranet' } ); is( exists $logger->{logger}, 1, 'Log4perl config found'); - is( $logger->warn('Message 2'), 1, 'Message 2 returned a value' ); - is( $logger->catastrophe, undef, 'catastrophe undefined'); - system("chmod 400 $log"); - is( $logger->warn('Message 3'), undef, 'Message 3 returned undef' ); -} + is( $logger->warn('Message 1'), 1, '->warn returned a value' ); + warning_is { $ret = $logger->catastrophe } + "ERROR: Unsupported method catastrophe", + "Undefined method raises warning"; + is( $ret, undef, "'catastrophe' method undefined"); + + Koha::Logger->put_mdc( 'foo', 'bar' ); + is( Koha::Logger->get_mdc( 'foo' ), 'bar', "MDC value via put_mdc is correct" ); + + Koha::Logger->put_mdc( 'foo', undef ); + is( Koha::Logger->get_mdc( 'foo' ), undef, "Updated MDC value to undefined via put_mdc is correct" ); + + Koha::Logger->put_mdc( 'foo', 'baz' ); + is( Koha::Logger->get_mdc( 'foo' ), 'baz', "Updated MDC value via put_mdc is correct" ); + + Koha::Logger->clear_mdc(); + is( Koha::Logger->get_mdc( 'foo' ), undef, "MDC value was cleared by clear_mdc" ); +}; sub mytempfile { my ( $fh, $fn ) = tempfile( SUFFIX => '.logger.test', UNLINK => 1 ); @@ -46,3 +84,4 @@ sub mytempfile { close $fh; return $fn; } +