Keine Abdeckung zur Laufzeit mit Devel :: Cover und ModPerl :: Registry

Wenn ich renneDevel::Cover mitModPerl::Registry, Ich erhalte keine Coverage-Informationen außerBEGIN Blöcke. Wenn ich das gleiche Skript mit @ starDevel::Cover von der Kommandozeile oder als CGI funktioniert alles in Ordnung (offensichtlich).

Wie kann ich @ machDevel::Cover "sehe", wie mein Code zur Laufzeit ausgeführt wird?

Hier istDevel::Cover verwandte Sachen in meinemhttpd.conf:

MaxClients 1
PerlSetEnv DEVEL_COVER_OPTIONS -db,/tmp/cover_db,-silent,1
PerlRequire /var/www/project/startup.pl

Hier iststartup.pl:

<pre><code>#!/usr/bin/perl use strict; use warnings; use Apache2::Directive (); BEGIN { # Devel::Cover database must be writable by worker processes my $conftree = Apache2::Directive::conftree->as_hash; my $name = $conftree->{User} or die "couldn't find user in Apache config"; print "user=$name\n"; my $uid = getpwnam($name); defined $uid or die "couldn't determine uid by name"; no warnings 'redefine'; local $> = $uid; require Devel::Cover; my $old_report = \&Devel::Cover::report; *Devel::Cover::report = sub { local $> = $uid; $old_report->(@_) }; Devel::Cover->import; } 1; </code></pre>

(As you may see, I made a monkey patch for <code>Devel::Cover</code> since <code>startup.pl</code> is being run by <code>root</code>, but worker processes run under a different user, and otherwise they couldn't read directories created by <code>startup.pl</code>. If you know a better solution, make a note, please.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage