Most people don't realize this, but test.pl doesn't really work
outside the core.

MakeMaker runs module tests in t/*.t are run through Test::Harness.
test.pl is *not*.  As a result, there is no parsing of the output.
The only way "make test" can fail is if test.pl exits abnormally.  A
'not ok' will *not* cause "make test" to fail (unless you're using
Test::Simple or Test::More, which *will* exit abnormally for you on
failure).

This makes any sort of automated testing really hard.  It also trips
up the CPAN shell.

Why is it that way?  Well, I think it's because test.pl predates the
universal adaption of Test::Harness.  So there's no explicit structure
imposed on it's output.  Some modules do follow the harness output
style.  Others don't.  Others don't use it to test at all, but do
other things, like benchmarking (for example, DBI).

The test.pl convention is forever muddled.  To attempt to impose
Test::Harness discipline on it would break lots and lots and lots of
CPAN modules.  So we'll leave it muddled and recommend people use the
t/*.t files instead.


So we phase out test.pl by...

Update module author documentation to say to use t/Foo.t instead of
test.pl, even if you only have one test file.

Alter h2xs and ExtUtils::ModuleMaker to make the stub test be t/Foo.t
instead of test.pl.

CPAN::Test (formerly CPAN::Smoke), the testing arm of CPANTS, will note
the use of test.pl and recommend the author change it to t/Foo.t


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl6 Quality Assurance     <[EMAIL PROTECTED]>       Kwalitee Is Job One
<mendel>         ScHWeRnsChweRN    sChWErN   SchweRN  SCHWErNSChwERnsCHwERN    
  sChWErn  ScHWeRn      schweRn           sCHWErN           schWeRn    scHWeRN 
   SchWeRN      scHWErn SchwErn       scHWErn       ScHweRN       sChwern      
scHWerN        scHWeRn           scHWerN        ScHwerN       SChWeRN scHWeRn  
        SchwERNschwERn        SCHwern  sCHWErN   SCHWErN           sChWeRn 

Reply via email to