[TIP] coverage.py and os.fork()?
Joe Malicki
jmalicki at gmail.com
Mon Mar 15 06:17:15 PDT 2010
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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nose.diff
Type: text/x-patch
Size: 595 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20100315/c2852ef0/attachment.bin>
More information about the testing-in-python
mailing list