# New Ticket Created by  James Keenan 
# Please include the string:  [perl #50258]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=50258 >


In t/harness we find the following:

     ## FIXME: ###
     # This is a temporary solution until Test::TAP::Model version
     # 0.05.  At that point, this function should be removed, and the
     # verbose line below should be uncommented.
     {
       no warnings qw/redefine once/;
       *Test::TAP::Model::run_tests = sub {
         my $self = shift;

         $self->_init;
         $self->{meat}{start_time} = time;

         my %stats;

         foreach my $file (@_) {
             my $data;
             print STDERR "- $file\n";
             $data = $self->run_test($file);
             $stats{tests} += $data->{results}{max} || 0;
             $stats{ok}    += $data->{results}{ok}  || 0;
         }

         printf STDERR "%s OK from %s tests (%.2f%% ok)\n\n",
             $stats{ok},
             $stats{tests},
             $stats{ok} / $stats{tests} * 100;

         $self->{meat}{end_time} = time;
       };

       my $start = time();
       my $model = Test::TAP::Model::Visual->new();
       # $model->set_verbose();
       $model->run_tests(@tests);

I happened upon this in the course of my initial work on redesigning  
Parrot's smoke testing (http://rt.perl.org/rt3/Ticket/Display.html? 
id=49276; http://www.perlfoundation.org/parrot/index.cgi? 
rfp_parrot_needs_better_smoke_reports).  Since I have  
Test::Tap::Model 0.09 installed, I figured I could test the premise  
of the comment above, i.e., comment out the re-definition of  
*Test::TAP::Model::run_tests and allow $model->set_verbose() to be  
executed.

No such luck.  If I followed the implicit instructions, 'make smoke'  
failed because set_verbose() could not be located:

Compiling with:
xx.c
cc -I./include -pipe -I/usr/local/include -D_LARGEFILE_SOURCE - 
D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DHASATTRIBUTE_CONST - 
DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_FORMAT -DHASATTRIBUTE_MALLOC - 
DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE - 
DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT -falign- 
functions=16 -mno-accumulate-outgoing-args -W -Wall -Waggregate- 
return -Wbad-function-cast -Wc++-compat -Wcast-align -Wcast-qual - 
Wchar-subscripts -Wcomment -Wdeclaration-after-statement -Wdisabled- 
optimization -Wextra -Wformat-nonliteral -Wformat-security -Wformat- 
y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int - 
Wimport -Winit-self -Winline -Winvalid-pch -Wmain -Wmissing-braces - 
Wmissing-declarations -Wmissing-field-initializers -Wmissing-include- 
dirs -Wmissing-prototypes -Wnested-externs -Wno-endif-labels -Wno- 
shadow -Wno-unused -Wnonnull -Wpacked -Wparentheses -Wpointer-arith - 
Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing - 
Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs -Wundef - 
Wunknown-pragmas -Wvariadic-macros -Wwrite-strings -g -DHAS_JIT - 
DI386 -DHAVE_COMPUTED_GOTO -fPIC -I. -o xx.o -c xx.c
make -C docs
make[1]: Entering directory `/home/jimk/work/parrot/docs'
/usr/local/bin/perl -MExtUtils::Command -e mkpath ops
make[1]: Leaving directory `/home/jimk/work/parrot/docs'
make -C src/dynpmc
make[1]: Entering directory `/home/jimk/work/parrot/src/dynpmc'
make[1]: Leaving directory `/home/jimk/work/parrot/src/dynpmc'
make -C src/dynoplibs
make[1]: Entering directory `/home/jimk/work/parrot/src/dynoplibs'
make[1]: Leaving directory `/home/jimk/work/parrot/src/dynoplibs'
make -C compilers/pge
make[1]: Entering directory `/home/jimk/work/parrot/compilers/pge'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/pge'
make -C compilers/tge
make[1]: Entering directory `/home/jimk/work/parrot/compilers/tge'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/tge'
make -C compilers/past-pm
make[1]: Entering directory `/home/jimk/work/parrot/compilers/past-pm'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/past-pm'
make -C compilers/pct
make[1]: Entering directory `/home/jimk/work/parrot/compilers/pct'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/pct'
make -C compilers/nqp
make[1]: Entering directory `/home/jimk/work/parrot/compilers/nqp'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/nqp'
make -C compilers/json
make[1]: Entering directory `/home/jimk/work/parrot/compilers/json'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/jimk/work/parrot/compilers/json'
/usr/local/bin/perl t/harness --html --gc-debug --running-make-test
Can't locate object method "set_verbose" via package  
"Test::TAP::Model::Visual" at t/harness line 298.
make: *** [smoke] Error 9

I then re-commented-out the line with set_verbose, leaving the re- 
definition of run_tests commented-out.  I then reconfigured, rebuilt  
and called 'make smoke' anew.  This time 'make smoke' simply hung at  
the next-to-last line cited above:  /usr/local/bin/perl t/harness -- 
html --gc-debug --running-make-test .  I had to Ctrl-C to get out of it.

I therefore conclude that the advice found in the FIXME comment is  
bad.  Even if you do have 0.09 installed, you have to use the re- 
definition currently found in t/harness.

So I therefore propose to delete the comment and to delete the  
commented-out set_verbose() call.  See attached  
t.harness.fixme.patch.txt.  I will apply in 24-48 hours if no one  
objects.

kid51

Index: t/harness
===================================================================
--- t/harness   (revision 25228)
+++ t/harness   (working copy)
@@ -262,10 +262,6 @@
     die "You must have Test::TAP::HTMLMatrix installed.\n\n$@"
         if $@;
 
-    ## FIXME: ###
-    # This is a temporary solution until Test::TAP::Model version
-    # 0.05.  At that point, this function should be removed, and the
-    # verbose line below should be uncommented.
     {
       no warnings qw/redefine once/;
       *Test::TAP::Model::run_tests = sub {
@@ -294,7 +290,6 @@
 
       my $start = time();
       my $model = Test::TAP::Model::Visual->new();
-      # $model->set_verbose();
       $model->run_tests(@tests);
 
       my $end = time();

Reply via email to