[Zope-dev] [PATCH] subunit output for zope.testing

Jonathan Lange jml at mumak.net
Thu Mar 11 17:38:15 EST 2010


On Thu, Mar 11, 2010 at 9:17 PM, Marius Gedminas <marius at gedmin.as> wrote:
> On Thu, Mar 11, 2010 at 08:52:11PM +0000, Jonathan Lange wrote:
>> For a long time, I've wanted to have a subunit output formatter for
>> zope.testing. Subunit is a language-generic streaming protocol for
>> test results. Once a test runner can display subunit output, it
>> becomes much easier to write tools to process output programmatically.
>> We want to use it in the Launchpad project for analyzing test results
>> and for distributing our test runs across multiple machines. Other
>> projects use it to get Hudson integration, or to glue their
>> multi-language test suite into one result.
>
> I like this.
>

Thanks.

> Incidentally, how do you integrate it with Hudson?  subunit2junitxml, I
> assume?  How exactly do you combine bin/test with subunit2junitxml -- I
> assume some care with respect to exit codes?
>

I haven't tried myself, but from analogy with other subunit tools:
  ./bin/test --subunit | subunit2junitxml

The formatter doesn't control exit codes, so I didn't really think
about them in this patch. Should I produce a follow up?

>> === modified file 'src/zope/testing/testrunner/formatter.py'
>> --- src/zope/testing/testrunner/formatter.py  2009-12-23 21:21:53 +0000
>> +++ src/zope/testing/testrunner/formatter.py  2010-03-11 20:29:26 +0000
> ...
>> +    def __init__(self, options):
>> +        if subunit is None:
>> +            raise Exception("Requires subunit 0.0.4 or better")
>> +        if content is None:
>> +            raise Exception("Requires testtools XXX or better")
>
> This seems a mite imprecise (unless testtools uses roman numerals for
> version numbering).
>

Oops :) I've changed it to say 0.9.2, and subunit to say 0.0.5, which
is the actual version I've tested with.

>> === modified file 'src/zope/testing/testrunner/testrunner-leaks.txt'
>> --- src/zope/testing/testrunner/testrunner-leaks.txt  2008-05-05 18:50:48 +0000
>> +++ src/zope/testing/testrunner/testrunner-leaks.txt  2010-02-20 22:23:32 +0000
>> @@ -16,7 +16,7 @@
>>      >>> from zope.testing import testrunner
>>
>>      >>> sys.argv = 'test --layer Layer11$ --layer Layer12$ -N4 -r'.split()
>> -    >>> _ = testrunner.run(defaults)
>> +    >>> _ = testrunner.run_internal(defaults)
>
> I'm curious about this change.
>

Sidnei explained it correctly. This particular file is only tested if
you're running a Python with --with-pydebug set, so it's easy to miss
when you make a change.

jml


More information about the Zope-Dev mailing list