[Twisted-Python] Get trial to use the docstring?

Lucas Taylor ltaylor.volks at gmail.com
Thu Aug 5 20:06:17 MDT 2010


On 8/5/10 6:25 PM, Nathan wrote:
 > I have a number of questions:
> 
> 1) I found the TreeReporter class that produces the default output
> (twisted/trial/reporter.py), and I found the file that seems to get
> run by trial (twisted/scripts/trial.py) but for the life of me I
> couldn't figure out how to get my own class to show up as one of the
> reporters that you can select by means of the --reporter=whatever
> argument.  How do you tie the two together?  I can just submit my
> modified TreeReporter, but it'd be nice to be able to also submit a
> wildly different option...

Wildly different options sound like a good case for plugins:
http://twistedmatrix.com/documents/current/core/howto/plugin.html

You need to create a plugin that makes your reporter accessible to
Trial. This means it needs to implement the IReporter interface:
http://twistedmatrix.com/documents/10.1.0/api/twisted.trial.itrial.IReporter.html

The plugin should be installed on your PYTHONPATH in a directory named
twisted/plugins. You could just place this in your project for instance,
or in the system twisted/plugins dir.

myproject/twisted/plugins/awesome_reporter.py

The plugin describes the reporter (for --help-reporters) and provides
the importable module and class that gets instantiated.

The reporter itself can be a subclass of TreeReporter or whatever, and
should implement the IReporter interface.

Here is a simple example:
http://gist.github.com/510688

For a much better example, check out the Tahoe-LAFS project
trialcoverage reporter:
http://tahoe-lafs.org/source/trialcoverage/trunk/


> 2) What's the official process for submitting a patch (or where is the
> process documented)?  I've never actually contributed code to
> twisted...

Start here:
http://twistedmatrix.com/trac/wiki/ContributingToTwistedLabs


> 3) Every time I install my custom twisted (with "sudo python setup.py
> install" on OS X 10.6.4 system python), trial starts spitting out the
> "dropin cache" error (see [1] below) which persists until I run "sudo
> twistd --help" as was suggested on the list last week or so.  Isn't
> there some way we can just address that error condition at
> installation time so that doesn't occur in the first place?

"Some way" always comes down to "Someone", which I suspect is a bit like
that ghost the kid from Family Circus is always blaming for muddy
footprints or whatever counts for domestic drama in Bil Keane's
Geritol-addled imagination.

So....there's an existing ticket you could help out with:
http://twistedmatrix.com/trac/ticket/2409

> 4) I'm sold on test-driven development (which is why I'm learning
> trial), so I'd like to both check for regressions and write a test for
> my patch.  I found twisted/trial/test/test_reporter.py -- how do I run
> just the tests in that file?  Does trial run on itself?
> 

Yes.

Trial is pretty flexible about specifying tests to run, so you can run
the whole suite, specify a directory of tests, or point it to a specific
TestCase:

trial twisted
trial twisted/test
trial twisted.test

trial twisted/trial/test/test_reporter.py
trial twisted.trial.test.test_reporter.TestTreeReporter

The same holds for your own project:
trial myproject.tests.test_reporter.AwesomeTreeReporter




More information about the Twisted-Python mailing list