[TIP] problems w/ coverage and threads?

Dirk Pranke dpranke at chromium.org
Thu Aug 26 11:54:38 PDT 2010


Great, thanks!

-- Dirk

On Thu, Aug 26, 2010 at 5:14 AM, Ned Batchelder <ned at nedbatchelder.com> wrote:
>  And it's now fixed:
> http://bitbucket.org/ned/coveragepy/changeset/39a76e1520aa
>
> --Ned.
>
> On 8/25/2010 8:21 AM, Ned Batchelder wrote:
>>
>>  Thanks, but I just did:
>> http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measured
>>
>> --Ned.
>>
>> On 8/25/2010 12:36 AM, Dirk Pranke wrote:
>>>
>>> Hi Ned,
>>>
>>> Thanks for the response. I've verified that if I pull the code into a
>>> function called by run(), it works for me as well, which gives me a
>>> pretty good workaround in the meantime.
>>>
>>> Would it be helpful for me to file this as a bug?
>>>
>>> -- Dirk
>>>
>>> On Tue, Aug 24, 2010 at 7:43 PM, Ned Batchelder<ned at nedbatchelder.com>
>>>  wrote:
>>>>
>>>>  Hi Dirk,
>>>>
>>>> Indeed I can reproduce this.  I don't understand why yet, but the run()
>>>> method is not recorded by the trace function, but functions it calls
>>>> are.
>>>>  Odd.  I'll work more on it..
>>>>
>>>> --Ned.
>>>>
>>>> On 8/24/2010 2:36 PM, Dirk Pranke wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> I'm running the following program under coverage on a Mac Pro running
>>>>> Snow Loepard (using "coverage run threads_unittest.py", python 2.5,
>>>>> coverage 3.3.1) and getting no coverage numbers from the
>>>>> TestThread.run()
>>>>> method. Also, if I try to mark it ignored with "# pragma: no cover",
>>>>> that seems to have no effect.
>>>>>
>>>>> I would have thought that both of these things would work. Any ideas?
>>>>>
>>>>> -- Dirk
>>>>>
>>>>> % cat threads_unittest.py
>>>>>
>>>>> import Queue
>>>>> import threading
>>>>> import unittest
>>>>>
>>>>> class TestThread(threading.Thread):
>>>>>     def __init__(self, started_queue, stopping_queue):
>>>>>         threading.Thread.__init__(self)
>>>>>         self._started_queue = started_queue
>>>>>         self._stopping_queue = stopping_queue
>>>>>
>>>>>     def run(self):
>>>>>         print "starting thread"
>>>>>         self._started_queue.put('')
>>>>>         msg = self._stopping_queue.get()
>>>>>         print "exiting thread"
>>>>>
>>>>> class ThreadTest(unittest.TestCase):
>>>>>     def test_threads(self):
>>>>>         starting_queue = Queue.Queue()
>>>>>         stopping_queue = Queue.Queue()
>>>>>         thd = TestThread(starting_queue, stopping_queue)
>>>>>         stopping_queue.put('')
>>>>>         thd.start()
>>>>>         starting_queue.get()
>>>>>         thd.join()
>>>>>         self.assertTrue(True)
>>>>>
>>>>> if __name__ == '__main__':
>>>>>     unittest.main()
>>>>> %
>>>>>
>>>>> _______________________________________________
>>>>> testing-in-python mailing list
>>>>> testing-in-python at lists.idyll.org
>>>>> http://lists.idyll.org/listinfo/testing-in-python
>>>>>
>>
>> _______________________________________________
>> 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