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;
   }
  
  
  

Reply via email to