You are viewing a plain text version of this content. The canonical link for it is here.
Posted to test-cvs@httpd.apache.org by st...@apache.org on 2003/11/05 10:49:27 UTC
cvs commit: httpd-test/perl-framework/Apache-Test Changes
stas 2003/11/05 01:49:27
Modified: perl-framework/Apache-Test/lib/Apache TestMM.pm TestRun.pm
perl-framework/Apache-Test Changes
Log:
add support for a new subclass method 'bug_report', which if provided
will be called when 'make test' fails. we use it in mod_perl to print
the pointers on how to proceed when the failure occurs.
Revision Changes Path
1.30 +1 -1 httpd-test/perl-framework/Apache-Test/lib/Apache/TestMM.pm
Index: TestMM.pm
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestMM.pm,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -u -r1.29 -r1.30
--- TestMM.pm 18 Jul 2003 18:50:34 -0000 1.29
+++ TestMM.pm 5 Nov 2003 09:49:27 -0000 1.30
@@ -54,7 +54,7 @@
run_tests : test_clean
$(PASSENV) \
$(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) \
- t/TEST -verbose=$(TEST_VERBOSE) $(TEST_FILES)
+ t/TEST -bugreport -verbose=$(TEST_VERBOSE) $(TEST_FILES)
test :: pure_all run_tests test_clean
1.121 +56 -6 httpd-test/perl-framework/Apache-Test/lib/Apache/TestRun.pm
Index: TestRun.pm
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestRun.pm,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -u -r1.120 -r1.121
--- TestRun.pm 26 Oct 2003 20:35:01 -0000 1.120
+++ TestRun.pm 5 Nov 2003 09:49:27 -0000 1.121
@@ -24,7 +24,7 @@
my %original_t_perms = ();
my @std_run = qw(start-httpd run-tests stop-httpd);
-my @others = qw(verbose configure clean help ssl http11);
+my @others = qw(verbose configure clean help ssl http11 bugreport);
my @flag_opts = (@std_run, @others);
my @string_opts = qw(order trace);
my @ostring_opts = qw(proxy ping);
@@ -46,6 +46,7 @@
'configure' => 'force regeneration of httpd.conf (tests will not be run)',
'clean' => 'remove all generated test files',
'help' => 'display this message',
+ 'bugreport' => 'print the hint how to report problems',
'preamble' => 'config to add at the beginning of httpd.conf',
'postamble' => 'config to add at the end of httpd.conf',
'ping[=block]' => 'test if server is running or port in use',
@@ -305,14 +306,30 @@
eval 'END {
return unless is_parent(); # because of fork
- local $?; # preserve the exit status
- eval {
- Apache::TestRun->new(test_config =>
- Apache::TestConfig->thaw)->scan_core;
- };
+ $self ||=
+ Apache::TestRun->new(test_config => Apache::TestConfig->thaw);
+ {
+ local $?; # preserve the exit status
+ eval {
+ $self->scan_core;
+ };
+ }
+ $self->try_bug_report();
}';
+ die "failed: $@" if $@;
+
+}
+
+sub try_bug_report {
+ my $self = shift;
+ if ($? && $self->{opts}->{bugreport}) {
+ $self->bug_report;
+ }
}
+# virtual method: does nothing
+sub bug_report {}
+
#throw away cached config and start fresh
sub refresh {
my $self = shift;
@@ -1021,6 +1038,36 @@
Several methods are sub-classable, if the default behavior should be
changed.
+=head2 C<bug_report>
+
+The C<bug_report()> method is executed when C<t/TEST> was executed
+with the C<-bugreport> option, and C<make test> (or C<t/TEST>)
+fail. Normally this is callback which you can use to tell the user how
+to deal with the problem, e.g. suggesting to read some document or
+email some details to someone who can take care of it. By default
+nothing is executed.
+
+The C<-bugreport> option is needed so this feature won't become
+annoying to developers themselves. It's automatically added to the
+C<run_tests> target in F<Makefile>. So if you repeateadly have to test
+your code, just don't use C<make test> but run C<t/TEST>
+directly. Here is an example of a custom C<t/TEST>
+
+ My::TestRun->new->run(@ARGV);
+
+ package My::TestRun;
+ use base 'Apache::TestRun';
+
+ sub bug_report {
+ my $self = shift;
+
+ print <<EOI;
+ +--------------------------------------------------------+
+ | Please file a bug report: http://perl.apache.org/bugs/ |
+ +--------------------------------------------------------+
+ EOI
+ }
+
=head2 C<pre_configure>
The C<pre_configure()> method is executed before the configuration for
@@ -1046,5 +1093,8 @@
Notice that the extension is I<.c>, and not I<.so>.
+=head2 C<new_test_config>
+
+META: to be completed
=cut
1.59 +4 -0 httpd-test/perl-framework/Apache-Test/Changes
Index: Changes
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/Changes,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -u -r1.58 -r1.59
--- Changes 26 Oct 2003 20:35:00 -0000 1.58
+++ Changes 5 Nov 2003 09:49:27 -0000 1.59
@@ -8,6 +8,10 @@
=item 1.06-dev
+add support for a new subclass method 'bug_report', which if provided
+will be called when 'make test' fails. we use it in mod_perl to print
+the pointers on how to proceed when the failure occurs. [Stas]
+
sudo and su -u aren't portable, therefore use a simple setuid/setguid
perl program instead, to check whether the root directory of the test
suite is rwx by the user/group apache is going to run under (when