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


Suppose that I run the tests in t/configure/*.t with Devel::Cover:

$> cover -delete coverage/configure/
$> PERL5OPT=-MDevel::Cover=-db,coverage/configure prove t/configure/ 
*.t "$@"
$> cover coverage/configure/ -ignore_re '^(t\/configure|\/usr|lib\/(?! 
Parrot))'
or
$> cover coverage/configure/ -ignore_re '^(t\/configure|\/usr|lib\/(?! 
Parrot))' -report=text > coverage/analysis.configure.txt

The resulting coverage analysis suggests that considerable code in  
the config/*/*.pm tree is not reached by these tests.  Here's an  
excerpt; see attachment for more.

---------------------------- ------ ------ ------ ------ ------  
------ ------
File                           stmt   bran   cond    sub    pod    
time  total
---------------------------- ------ ------ ------ ------ ------  
------ ------
config/auto/aio.pm             45.5    0.0    n/a   83.3    n/a     
0.1   42.6
config/auto/alignptrs.pm       42.9    0.0    0.0   85.7    n/a     
0.0   35.8
config/auto/byteorder.pm       53.6    0.0    n/a   83.3    n/a     
0.0   50.0
config/auto/cgoto.pm           41.7    0.0    0.0   83.3    n/a     
0.0   37.0
config/auto/cpu.pm             58.1    0.0    n/a   85.7    n/a     
0.0   52.2

In every case I've examined, the runsteps() method is untested by the  
test suite in question.  Writing a test for that method would usually  
boost subroutine coverage to 100% and would go along way toward  
getting decent statement coverage.

Are these modules touched by tests in some other location?  Ack-ing a  
sample of them from the top level in my sandbox suggests not.

##### START ACK #####
[parrot] 517 $ ack --nohtml --nophp 'auto(\/|::)python'
config/auto/python.pm
6:config/auto/python - Check whether python is there
18:package auto::python;

Configure.pl
345:    auto::python
##### END ACK #####

Assignment:

Write unit tests for each module found under config/.

Such tests should be run in a 'pre-Configure.pl' state, i.e., they  
should be executable at the point after checking out a Parrot  
repository branch and before you have invoked Configure.pl.

Any files or directories created while running such tests should be  
created in temporary directories that are automatically cleaned up at  
the end of a single test script's execution.

kid51

Reply via email to