[TIP] coverage.py and os.fork()?

Joe Malicki jmalicki at gmail.com
Mon May 17 11:42:21 PDT 2010


On Sat, Mar 20, 2010 at 8:34 AM, Ned Batchelder <ned at nedbatchelder.com> wrote:
> Joe, I've fixed the os.fork issue, you can try the tip of
> http://bitbucket.org/ned/coveragepy/ to see if it works for you.

Hi Ned,
sorry for the delay in responding, I didn't notice your response here
until I reread the thread.

The tip of the bitbucket repository works great for me, thanks!
Joe

> As for the nose plugin, it has long been a goal to take over development of
> the plugin so that it can keep pace with coverage.py itself.  I haven't
> gotten there yet, though...
>
> --Ned.
>
> Joe Malicki wrote:
>>
>> Thanks!
>>
>> Also, the next step is to get support for this into nose :)
>>
>> Right now, I can set parallel=True in a .coveragerc and use the
>> attached patch to have nose
>> call combine() before report().
>>
>> What's the right way  to do this longer term?  Should the cover.py
>> nose plugin use the new-style
>> coverage object (rather than module) interface so it can set some of
>> the newer options?  I'll
>> happily make it so as it's not much work, but I don't know if some are
>> opposed to breaking
>> compatibility with a new nose and pre-3.0 coverage.py (13 June 2009)?
>>
>> -joe
>>
>> On Mon, Mar 15, 2010 at 6:45 AM, Ned Batchelder <ned at nedbatchelder.com>
>> wrote:
>>
>>>
>>> Joe, I read your first email last night, and mulling over the
>>> possibilities,
>>> concluded that the problem was just as you have diagnosed.  I awoke this
>>> morning ready to fix it, and found you already had!  I'll apply the patch
>>> today...
>>>
>>> Thanks.
>>>
>>> --Ned.
>>>
>>> Joe Malicki wrote:
>>>
>>> I dug in enough to realize it seemed to be a fairly fatal flaw of how
>>> parallel=True was implemented.
>>>
>>> Issue and provisional patch that seem to work for me here:
>>>
>>> http://bitbucket.org/ned/coveragepy/issue/56/
>>>
>>> Thanks!
>>> Joe
>>>
>>> On Sun, Mar 14, 2010 at 7:38 PM, Joe Malicki <jmalicki at gmail.com> wrote:
>>>
>>>
>>> Does anyone have a recipe of getting coverage.py to work across a fork()?
>>>
>>> I was trying to use coverage 3.3.1 with python 2.6 and
>>> multiprocessing, and couldn't figure out how to get it to trace the
>>> child.
>>> Attached is a simple test program to illustrate behavior and show
>>> things I tried.
>>>
>>> Is there another way of doing this I didn't come across, or is this
>>> something that needs to be hacked into coverage?
>>>
>>> Thanks!
>>> Joe
>>>
>>> with coverage run -p testcover.py, i see:
>>>
>>> jmalicki at boott-spur:~$ coverage combine
>>> jmalicki at boott-spur:~$ coverage report -m
>>> Name        Stmts   Exec  Cover   Missing
>>> -----------------------------------------
>>> testcover      19     10    52%   10-20, 27
>>>
>>> When I explicitly call stop: coverage run -p testcover.py -t
>>> Child!
>>> Traceback (most recent call last):
>>>  File "testcover.py", line 32, in <module>
>>>   main(sys.argv)
>>>  File "testcover.py", line 27, in main
>>>   child(args)
>>>  File "testcover.py", line 18, in child
>>>   coverage.stop()
>>>  File
>>>
>>> "/usr/local/lib/python2.6/dist-packages/coverage-3.3.1-py2.6-linux-x86_64.egg/coverage/__init__.py",
>>> line 39, in wrapper
>>>   return getattr(_the_coverage, name)(*args, **kwargs)
>>>  File
>>>
>>> "/usr/local/lib/python2.6/dist-packages/coverage-3.3.1-py2.6-linux-x86_64.egg/coverage/control.py",
>>> line 212, in stop
>>>   self.collector.stop()
>>>  File
>>>
>>> "/usr/local/lib/python2.6/dist-packages/coverage-3.3.1-py2.6-linux-x86_64.egg/coverage/collector.py",
>>> line 214, in stop
>>>   assert self._collectors[-1] is self
>>> AssertionError
>>>
>>> coverage run -p testcover.py -s
>>> Child!
>>> jmalicki at boott-spur:~$ coverage combine
>>> coverage report -m:
>>> Name        Stmts   Exec  Cover   Missing
>>> -----------------------------------------
>>> testcover      19     10    52%   10-20, 27
>>>
>>>
>>>
>>> _______________________________________________
>>> testing-in-python mailing list
>>> testing-in-python at lists.idyll.org
>>> http://lists.idyll.org/listinfo/testing-in-python
>>>
>>>
>



More information about the testing-in-python mailing list