/usr/lib/python2.6/site-packages/nose
NameSizeModeActions
ext/-0755rm
plugins/-0755rm
case.py125080644editdlrm
case.pyc142820644editdlrm
case.pyo142820644editdlrm
commands.py45700644editdlrm
commands.pyc50030644editdlrm
commands.pyo50030644editdlrm
config.py202030644editdlrm
config.pyc198900644editdlrm
config.pyo198900644editdlrm
core.py171750644editdlrm
core.pyc175490644editdlrm
core.pyo175490644editdlrm
exc.py3760644editdlrm
exc.pyc5760644editdlrm
exc.pyo5760644editdlrm
failure.py8500644editdlrm
failure.pyc13670644editdlrm
failure.pyo13670644editdlrm
importer.py54900644editdlrm
importer.pyc50940644editdlrm
importer.pyo50940644editdlrm
inspector.py69040644editdlrm
inspector.pyc59250644editdlrm
inspector.pyo59250644editdlrm
loader.py214370644editdlrm
loader.pyc160800644editdlrm
loader.pyo160800644editdlrm
proxy.py58400644editdlrm
proxy.pyc73270644editdlrm
proxy.pyo71200644editdlrm
result.py58490644editdlrm
result.pyc59130644editdlrm
result.pyo59130644editdlrm
selector.py90030644editdlrm
selector.pyc88760644editdlrm
selector.pyo88760644editdlrm
suite.py186930644editdlrm
suite.pyc186630644editdlrm
suite.pyo186630644editdlrm
tools.py50230644editdlrm
tools.pyc72090644editdlrm
tools.pyo71290644editdlrm
twistedtools.py52680644editdlrm
twistedtools.pyc58150644editdlrm
twistedtools.pyo58150644editdlrm
util.py192750644editdlrm
util.pyc201250644editdlrm
util.pyo201250644editdlrm
__init__.py149850644editdlrm
__init__.pyc152830644editdlrm
__init__.pyo152830644editdlrm
Edit: /usr/lib/python2.6/site-packages/nose/proxy.py (5840B)
""" Result Proxy ------------ The result proxy wraps the result instance given to each test. It performs two functions: enabling extended error/failure reporting and calling plugins. As each result event is fired, plugins are called with the same event; however, plugins are called with the nose.case.Test instance that wraps the actual test. So when a test fails and calls result.addFailure(self, err), the result proxy calls addFailure(self.test, err) for each plugin. This allows plugins to have a single stable interface for all test types, and also to manipulate the test object itself by setting the `test` attribute of the nose.case.Test that they receive. """ import logging from nose.config import Config log = logging.getLogger(__name__) def proxied_attribute(local_attr, proxied_attr, doc): """Create a property that proxies attribute ``proxied_attr`` through the local attribute ``local_attr``. """ def fget(self): return getattr(getattr(self, local_attr), proxied_attr) def fset(self, value): setattr(getattr(self, local_attr), proxied_attr, value) def fdel(self): delattr(getattr(self, local_attr), proxied_attr) return property(fget, fset, fdel, doc) class ResultProxyFactory(object): """Factory for result proxies. Generates a ResultProxy bound to each test and the result passed to the test. """ def __init__(self, config=None): if config is None: config = Config() self.config = config self.__prepared = False self.__result = None def __call__(self, result, test): """Return a ResultProxy for the current test. On first call, plugins are given a chance to replace the result used for the remaining tests. If a plugin returns a value from prepareTestResult, that object will be used as the result for all tests. """ if not self.__prepared: self.__prepared = True plug_result = self.config.plugins.prepareTestResult(result) if plug_result is not None: self.__result = result = plug_result if self.__result is not None: result = self.__result return ResultProxy(result, test, config=self.config) class ResultProxy(object): """Proxy to TestResults (or other results handler). One ResultProxy is created for each nose.case.Test. The result proxy calls plugins with the nose.case.Test instance (instead of the wrapped test case) as each result call is made. Finally, the real result method is called, also with the nose.case.Test instance as the test parameter. """ def __init__(self, result, test, config=None): if config is None: config = Config() self.config = config self.plugins = config.plugins self.result = result self.test = test def __repr__(self): return repr(self.result) def assertMyTest(self, test): # The test I was called with must be my .test or my # .test's .test. or my .test.test's .case case = getattr(self.test, 'test', None) assert (test is self.test or test is case or test is getattr(case, '_nose_case', None), "ResultProxy for %r (%s) was called with test %r (%s)" % (self.test, id(self.test), test, id(test))) def afterTest(self, test): self.assertMyTest(test) self.plugins.afterTest(self.test) if hasattr(self.result, "afterTest"): self.result.afterTest(self.test) def beforeTest(self, test): self.assertMyTest(test) self.plugins.beforeTest(self.test) if hasattr(self.result, "beforeTest"): self.result.beforeTest(self.test) def addError(self, test, err): self.assertMyTest(test) plugins = self.plugins plugin_handled = plugins.handleError(self.test, err) if plugin_handled: return formatted = plugins.formatError(self.test, err) if formatted is not None: err = formatted plugins.addError(self.test, err) self.result.addError(self.test, err) if not self.result.wasSuccessful() and self.config.stopOnError: self.shouldStop = True def addFailure(self, test, err): self.assertMyTest(test) plugins = self.plugins plugin_handled = plugins.handleFailure(self.test, err) if plugin_handled: return formatted = plugins.formatFailure(self.test, err) if formatted is not None: err = formatted plugins.addFailure(self.test, err) self.result.addFailure(self.test, err) if self.config.stopOnError: self.shouldStop = True def addSuccess(self, test): self.assertMyTest(test) self.plugins.addSuccess(self.test) self.result.addSuccess(self.test) def startTest(self, test): self.assertMyTest(test) self.plugins.startTest(self.test) self.result.startTest(self.test) def stop(self): self.result.stop() def stopTest(self, test): self.assertMyTest(test) self.plugins.stopTest(self.test) self.result.stopTest(self.test) # proxied attributes shouldStop = proxied_attribute('result', 'shouldStop', """Should the test run stop?""") errors = proxied_attribute('result', 'errors', """Tests that raised an exception""") failures = proxied_attribute('result', 'failures', """Tests that failed""") testsRun = proxied_attribute('result', 'testsRun', """Number of tests run""")