[ABE.pm] Re: web page testing

Phil Lawrence phil at five-lawrences.com
Wed Jul 28 08:17:35 CDT 2004


Cc: ABE.pm
Cc: Philly.pm

Ricardo SIGNES wrote:
> * Phil Lawrence
> 
>>Anyway, why not have:
>>./t
>>./t/modules
>>./t/modules/login.pm
>>[ ... ]
> 
> 
> ...why not indeed? :)  That's probably what I'd do, if I had
 > a lot of repeated stuff, too.

Here's why not:  I can't use Test::More from within those modules, 
because I already used it in the ./t/test_driver.pl script!  :-(

I wasted yesterday looking for a way to do this, and the best I could do 
by 5:00 was find references to Test::Builder, whose constructor returns 
singletons.  I think this may help, but I'm not sure about 
implementation.  Ideas?  Basically, I need the ability to write tests 
into each module.

The last thing I tried was to subclass Test::More thusly:
   package T::Test;
   use warnings;
   use strict;
   use Test::More qw(no_plan);
   sub new { bless {} => shift() }
   1;

and in ./t/test_driver.pl:
   use T::Test;
   my $t = T::Test->new;
   $t->require_ok( 'Term::Interact' );

If this worked, I thought I could pass $t to all the different testing 
modules I use from the driver script.  But no dice:

   $ ./t/test.pl
   not ok 1 - require T::Test=HASH(0x81392a0);
   #     Failed test (./t/test.pl at line 11)
   #     Tried to require 'T::Test=HASH(0x81392a0)'.
   #     Error:  Can't modify require in scalar assignment
         at (eval 2)   line 2, at EOF
   1..1
   # Looks like you failed 1 tests of 1.

This may be related to Test::Builder's export_to_level method, I don't 
know.  I'm not thinking clearly about this...

Phil



More information about the ABE-pm mailing list