stas 2004/09/16 16:59:16
Modified: t/response/TestAPI aplog.pm
Log:
deploy TestCommon::LogDiff to actually verify that the logging is done
correctly
Revision Changes Path
1.19 +82 -23 modperl-2.0/t/response/TestAPI/aplog.pm
Index: aplog.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/aplog.pm,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -u -r1.18 -r1.19
--- aplog.pm 16 Sep 2004 16:36:29 -0000 1.18
+++ aplog.pm 16 Sep 2004 23:59:16 -0000 1.19
@@ -3,26 +3,34 @@
use strict;
use warnings FATAL => 'all';
-use Apache::Test;
-use Apache::TestUtil;
-
use Apache::ServerRec qw(warn); # override warn locally
use Apache::RequestRec ();
use Apache::RequestUtil ();
use Apache::Log ();
use Apache::MPM ();
+use File::Spec::Functions qw(catfile);
+
+use Apache::Test;
+use Apache::TestUtil;
+use TestCommon::LogDiff;
+
use Apache::Const -compile => qw(OK :log);
use APR::Const -compile => qw(:error SUCCESS);
my @LogLevels = qw(emerg alert crit error warn notice info debug);
my $package = __PACKAGE__;
+my $path = catfile Apache::Test::vars('serverroot'),
+ qw(logs error_log);
+
sub handler {
my $r = shift;
my $s = $r->server;
- plan $r, tests => (@LogLevels * 2) + 5;
+ plan $r, tests => (@LogLevels * 2) + 17;
+
+ my $logdiff = TestCommon::LogDiff->new($path);
my $rlog = $r->log;
@@ -32,38 +40,71 @@
ok $slog->isa('Apache::Log::Server');
+ t_server_log_warn_is_expected();
$rlog->info($package, " test in progress");
+ ok t_cmp $logdiff->diff,
+ qr/... TestAPI::aplog test in progress/,
+ '$r->log->info';
my($file, $line) = Apache::Log::LOG_MARK;
ok $file eq __FILE__;
ok $line == __LINE__ - 2;
for my $method (@LogLevels) {
- #wrap in sub {}, else Test.pm tries to run the return value of ->can
+ # wrap in sub {}, else Test.pm tries to run the return value
+ # of ->can
ok sub { $rlog->can($method) };
ok sub { $slog->can($method) };
}
- $s->log_serror(Apache::Log::LOG_MARK, Apache::LOG_INFO|Apache::LOG_STARTUP,
- APR::SUCCESS, "This log message comes with no header");
+ # log_serror
+ {
+ t_server_log_warn_is_expected();
+ $s->log_serror(Apache::Log::LOG_MARK,
+ Apache::LOG_INFO|Apache::LOG_STARTUP,
+ APR::SUCCESS, "This log message comes with no header");
+ ok t_cmp $logdiff->diff,
+ qr/^This log message comes with no header$/m,
+ '$s->log_serror(LOG_MARK, LOG_INFO|LOG_STARTUP...)';
- t_server_log_warn_is_expected();
- $s->log_serror(__FILE__, __LINE__, Apache::LOG_DEBUG,
- APR::SUCCESS, "log_serror test ok");
+ t_server_log_warn_is_expected();
+ $s->log_serror(__FILE__, __LINE__, Apache::LOG_DEBUG,
+ APR::SUCCESS, "log_serror test 1");
+ ok t_cmp $logdiff->diff,
+ qr/: log_serror test 1$/m,
+ '$s->log_serror(__FILE__, __LINE__, LOG_DEBUG...)';
- t_server_log_warn_is_expected();
- $s->log_serror(Apache::Log::LOG_MARK, Apache::LOG_DEBUG,
- APR::EGENERAL, "log_serror test 2 ok");
+ t_server_log_warn_is_expected();
+ $s->log_serror(Apache::Log::LOG_MARK, Apache::LOG_DEBUG,
+ APR::EGENERAL, "log_serror test 2");
+ ok t_cmp $logdiff->diff,
+ qr/Error string not specified yet: log_serror test 2/,
+ '$s->log_serror(LOG_MARK, LOG_DEBUG, APR::EGENERAL...)';
+ }
+ # log_rerror
t_server_log_error_is_expected();
$r->log_rerror(Apache::Log::LOG_MARK, Apache::LOG_CRIT,
- APR::ENOTIME, "log_rerror test ok");
-
- t_server_log_error_is_expected();
- $r->log_error('$r->log_error test ok');
+ APR::ENOTIME, "log_rerror test");
+ # can't match against the error string, since a locale may kick in
+ ok t_cmp $logdiff->diff,
+ qr/\[crit\] .*?: log_rerror test/,
+ '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::ENOTIME...)';
- t_server_log_error_is_expected();
- $s->log_error('$s->log_error test ok');
+ # log_error
+ {
+ t_server_log_error_is_expected();
+ $r->log_error('$r->log_error test');
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] \$r->log_error test/,
+ '$r->log_error(...)';
+
+ t_server_log_error_is_expected();
+ $s->log_error('$s->log_error test');
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] \$s->log_error test/,
+ '$s->log_error(...)';
+ }
# XXX: at the moment we can't change loglevel after server startup
# in a threaded mpm environment
@@ -73,31 +114,49 @@
if ($s->error_fname) {
#XXX: does not work under t/TEST -ssl
$slog->debug(sub { die "set loglevel no workie" });
+ # ok t_cmp $logdiff->diff...
}
$s->loglevel(Apache::LOG_DEBUG);
$slog->debug(sub { ok 1; "$package test done" });
+ ok t_cmp $logdiff->diff,
+ qr/\$slog->debug\(sub \{/,
+ '$slog->debug(sub { })';
+
}
else {
ok 1;
+ ok 1;
}
t_server_log_warn_is_expected();
- $s->warn('$s->warn test ok');
+ $s->warn('$s->warn test');
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] \$s->warn test/,
+ '$s->warn()';
{
t_server_log_warn_is_expected();
# this uses global server to get $s internally
- Apache::ServerRec::warn("Apache::ServerRec::warn test ok");
+ Apache::ServerRec::warn("Apache::ServerRec::warn test");
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] Apache::ServerRec::warn test/,
+ 'Apache::ServerRec::warn() w/o Apache->request ';
Apache->request($r);
t_server_log_warn_is_expected();
# this uses the global $r to get $s internally
- Apache::ServerRec::warn("Apache::ServerRec::warn test ok");
+ Apache::ServerRec::warn("Apache::ServerRec::warn test");
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] Apache::ServerRec::warn test/,
+ 'Apache::ServerRec::warn() w/ Apache->request ';
}
t_server_log_warn_is_expected();
- warn "warn test ok";
+ warn "warn test";
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] warn test/,
+ 'overriden via export warn()';
Apache::OK;
}