[TIP] coverage combine with the results of a jenkins matrix job...

Chris Withers chris at simplistix.co.uk
Sat Feb 16 01:33:18 PST 2013

Hi Ned,

I'm all at sea on this, still.

I added the "parallel = True" option to my .coveragerc and now appear to 
have all the coverage files as expected:


Here's how I tried to combine:

$ cp */.coverage.* .
$ coverage combine



...but 'coverage report' gives:


What do these lines mean:

[Errno 2] No such file or directory: 

Also, I need to get around hard-coding those last segments, as they may 
change on each run, so I tried the above process with a .coveragerc as here:


...but got:

$ coverage combine --rcfile=.coveragerc.wrong
Pattern must not end with wildcards.

Not sure what I should do here? The wildcard bit *is* the last part in 
the path, and the testfixtures package lives underneath that:


Also confused by this:

(d41d8cd9)jenkins at server2:~/slave/workspace/testfixtures-coverage$ 
coverage combine
(d41d8cd9)jenkins at server2:~/slave/workspace/testfixtures-coverage$ 
coverage report testfixtures
Name           Stmts   Miss Branch BrMiss  Cover
testfixtures   NoSource: No source for code: 
[Errno 21] Is a directory: 

I don't understand, 'testfixtures' is a module name and that's what 
'coverage report' says it wants:

$ coverage report --help
Usage: coverage report [options] [modules]

Report coverage statistics on modules.

Anyway, any help very gratefully appreciated :-)


Here's the .coveragec
On 15/02/2013 03:18, Ned Batchelder wrote:
> Chris,
> If you use the --parallel flag, the .coverage files will be given
> distinct names.  You can then copy them to a single directory, and
> "coverage combine" will combine them.  You'll need a [path] section if
> the same source file is found at different paths for different runs.
> --Ned.
> On 2/14/2013 6:25 PM, Chris Withers wrote:
>> (copying the list, since I think this may be of wider interest)
>> Hi Ned,
>> Okay, I think I'm part of the way there, but still confused, hopefully
>> you can help...
>> So, the runs generating the .coverage files are in this matrix:
>> http://jenkins.simplistix.co.uk/view/testfixtures/job/testfixtures-buildout/
>> Here's an example output:
>> http://jenkins.simplistix.co.uk/view/testfixtures/job/testfixtures-buildout/PYTHON=3.3,label=linux/182/console
>> The actual command being run is:
>> bin/nosetests --with-xunit --with-cov --cov=testfixtures
>> --cov-report=xml --cov-report=html
>> So, now I have a downstream job where I want to combine all those
>> .coverage files and generate html and xml reports. Here's the
>> workspace for that job:
>> http://jenkins.simplistix.co.uk/view/testfixtures/job/testfixtures-coverage/ws/
>> So, each PYTHON* has a .coverage file in it, testfixtures-3.0.0dev
>> contains the source.
>> I thought it would just be a case of:
>> coverage combine PYTHON*/.coverage
>> coverage xml
>> coverage html
>> But combine doesn't appear to work as I expect. In fact, I don't think
>> I have a clue how it's supposed to work, so thought I'd ask ;-)
>> What should I be looking to do? I have a feeling I'll need a [path]
>> section in it, but no idea what I should put there...
>> Any help very gratefully received!
>> Chris
>> On 13/02/2013 16:21, Ned Batchelder wrote:
>>> Sorry, I'm not well-versed enough with Jenkins to know.
>>> --Ned.
>>> On 2/13/2013 10:57 AM, Chris Withers wrote:
>>>> Hmm, any idea how to do that in a Jenkins matrix job?
>>>> Chris
>>>> On 13/02/2013 15:52, Ned Batchelder wrote:
>>>>> I would run coverage twice: for Python 2, and again for Python 3, and
>>>>> then I would combine the results (coverage combine).
>>>>> --Ned.
>>>>> On 2/13/2013 10:36 AM, Chris Withers wrote:
>>>>>> One question: if I have code paths that should not be covered under a
>>>>>> particular version of python, but should under others, how can I go
>>>>>> about dealing with that?
>>>>>> (eg:
>>>>>> if PY3:
>>>>>> ...
>>>>>> else:
>>>>>> ...
>>>>>> both of those branches should be covered in different test runs, but
>>>>>> neither of them will be covered in a single run.
>>>>>> How would you tackle this to give meaningful output?
>>>>>> cheers,
>>>>>> Chris
> ______________________________________________________________________
> This email has been scanned by the Symantec Email Security.cloud service.
> For more information please visit http://www.symanteccloud.com
> ______________________________________________________________________

Simplistix - Content Management, Batch Processing & Python Consulting
            - http://www.simplistix.co.uk

More information about the testing-in-python mailing list