mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-23 14:52:26 +00:00
4b4f5bbcba
Note that using "whatever version of python the name 'python' maps to in the current shell environment" is more error-prone that specifying which python you mean, such as by executing "/usr/bin/python setup.py" instead of executing "./setup.py". When you build tahoe (by running "make") it will make a copy of bin/allmydata-tahoe in instdir/bin/allmydata-tahoe with the shebang line rewritten to execute the specific version of python that was used when building instead of to execute "/usr/bin/env python". However, it seems better that the default for lazy people be "whatever 'python' means currently" instead of "whatever 'python' meant to the manufacturer of your operating system".
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
#! /usr/bin/env python
|
|
|
|
from zope.interface import implements
|
|
from twisted.trial.itrial import IReporter
|
|
from twisted.plugin import IPlugin
|
|
|
|
# register a plugin that can create our FigleafReporter. The reporter itself
|
|
# lives in a separate place
|
|
|
|
# note that this .py file is *not* in a package: there is no __init__.py in
|
|
# our parent directory. This is important, because otherwise ours would fight
|
|
# with Twisted's. When trial looks for plugins, it merely executes all the
|
|
# *.py files it finds in and twisted/plugins/ subdirectories of anything on
|
|
# sys.path . The namespace that results from executing these .py files is
|
|
# examined for instances which provide both IPlugin and the target interface
|
|
# (in this case, trial is looking for IReporter instances). Each such
|
|
# instance tells the application how to create a plugin by naming the module
|
|
# and class that should be instantiated.
|
|
|
|
# When installing our package via setup.py, arrange for this file to be
|
|
# installed to the system-wide twisted/plugins/ directory.
|
|
|
|
class _Reporter(object):
|
|
implements(IPlugin, IReporter)
|
|
|
|
def __init__(self, name, module, description, longOpt, shortOpt, klass):
|
|
self.name = name
|
|
self.module = module
|
|
self.description = description
|
|
self.longOpt = longOpt
|
|
self.shortOpt = shortOpt
|
|
self.klass = klass
|
|
|
|
|
|
fig = _Reporter("Figleaf Code-Coverage Reporter",
|
|
"allmydata.test.trial_figleaf",
|
|
description="verbose color output (with figleaf coverage)",
|
|
longOpt="verbose-figleaf",
|
|
shortOpt="f",
|
|
klass="FigleafReporter")
|
|
|
|
bwfig = _Reporter("Figleaf Code-Coverage Reporter (colorless)",
|
|
"allmydata.test.trial_figleaf",
|
|
description="Colorless verbose output (with figleaf coverage)",
|
|
longOpt="bwverbose-figleaf",
|
|
shortOpt=None,
|
|
klass="FigleafTextReporter")
|
|
|