-
Guillaume ROUSSE authoredGuillaume ROUSSE authored
logger.t 3.45 KiB
#!/usr/bin/perl
use strict;
use warnings;
use English qw(-no_match_vars);
use Fcntl qw(:seek);
use File::stat;
use File::Temp;
use Test::More;
use Test::Exception;
use IdPAccountManager::Logger;
plan tests => 14;
my $logger;
throws_ok {
$logger = IdPAccountManager::Logger->new();
} qr/^missing argument 'file'/,
'instanciation: no file argument';
throws_ok {
$logger = IdPAccountManager::Logger->new(
file => '/no/such/file'
);
} qr/^missing argument 'verbosity'/,
'instanciation: no verbosity argument';
throws_ok {
$logger = IdPAccountManager::Logger->new(
file => '/no/such/file',
verbosity => LOG_DEBUG
);
} qr/^invalid argument 'verbosity'/,
'instanciation: invalid verbosity argument';
throws_ok {
$logger = IdPAccountManager::Logger->new(
file => '/no/such/file',
verbosity => 'debug'
);
} qr/^failed to open \/no\/such\/file/,
'instanciation: invalid file argument';
my $logfile = File::Temp->new(UNLINK => $ENV{TEST_DEBUG} ? 0 : 1, SUFFIX => '.log');
lives_ok {
$logger = IdPAccountManager::Logger->new(
file => $logfile->filename(),
verbosity => 'debug'
);
} 'instanciation with debug level verbosity: ok';
is(
getFileOutput($logfile, \&logDebugMessage),
POSIX::strftime("%Y:%m:%d %H:%M:%S", localtime(time)) .
' - (DEBUG) - NOIP - NOEMAIL - main::logDebugMessage() message',
'debug message formating'
);
is(
getFileOutput($logfile, \&logInfoMessage),
POSIX::strftime("%Y:%m:%d %H:%M:%S", localtime(time)) .
' - (INFO) - NOIP - NOEMAIL - main::logInfoMessage() message',
'info message formating'
);
is(
getFileOutput($logfile, \&logNoticeMessage),
POSIX::strftime("%Y:%m:%d %H:%M:%S", localtime(time)) .
' - (NOTICE) - NOIP - NOEMAIL - main::logNoticeMessage() message',
'notice message formating'
);
is(
getFileOutput($logfile, \&logErrorMessage),
POSIX::strftime("%Y:%m:%d %H:%M:%S", localtime(time)) .
' - (ERROR) - NOIP - NOEMAIL - main::getFileOutput#78 > main::logErrorMessage#120 message',
'error message formating'
);
lives_ok {
$logger = IdPAccountManager::Logger->new(
file => $logfile->filename(),
verbosity => 'error'
);
} 'instanciation with error level verbosity: ok';
ok(
!defined(getFileOutput($logfile, \&logDebugMessage)),
'no debug message'
);
ok(
!defined(getFileOutput($logfile, \&logInfoMessage)),
'no info message'
);
ok(
!defined(getFileOutput($logfile, \&logNoticeMessage)),
'no notice message'
);
is(
getFileOutput($logfile, \&logErrorMessage),
POSIX::strftime("%Y:%m:%d %H:%M:%S", localtime(time)) .
' - (ERROR) - NOIP - NOEMAIL - main::getFileOutput#108 > main::logErrorMessage#120 message',
'error message formating'
);
sub getFileOutput {
my ($handle, $callback) = @_;
my $stat = stat $handle;
$callback->();
seek $handle, $stat->size(), SEEK_SET;
my $line = $handle->getline();
chomp $line if $line;
return $line;
}
sub logDebugMessage {
$logger->log(level => LOG_DEBUG, message => 'message');
$logger->{handle}->flush()
}
sub logInfoMessage {
$logger->log(level => LOG_INFO, message => 'message');
$logger->{handle}->flush()
}
sub logNoticeMessage {
$logger->log(level => LOG_NOTICE, message => 'message');
$logger->{handle}->flush()
}
sub logErrorMessage {
$logger->log(level => LOG_ERROR, message => 'message');
$logger->{handle}->flush()
}