← Back to team overview

testtools-dev team mailing list archive

[Bug 711209] [NEW] When running Twisted tests, failures are not reported

 

Public bug reported:

With this basic test case:

{{{
class TestBlah(TestCaseWithFactory):
    run_tests_with = AsynchronousDeferredRunTest.make_factory(timeout=10)
    def test_failing_test(self):
        self.assertFalse(True)
}}}

I don't see a failure reported.  Tracing through the code in pdb I can
produce a "AttributeError: "can't set attribute"" at the backtrace
below:

  /home/ed/canonical/lp-branches/double-build-bug-705342/bin/test(275)<module>()
-> testrunner.run([])
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/__init__.py(32)run()
-> failed = run_internal(defaults, args, script_parts=script_parts)
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/__init__.py(45)run_internal()
-> runner.run()
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(138)run()
-> self.run_tests()
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(219)run_tests()
-> setup_layers, self.failures, self.errors)
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(377)run_layer()
-> return run_tests(options, tests, layer_name, failures, errors)
  /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(309)run_tests()
-> test(result)
  /usr/lib/python2.6/unittest.py(300)__call__()
-> return self.run(*args, **kwds)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/testcase.py(450)run()
-> return self.__RunTest(self, self.exception_handlers).run(result)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(74)run()
-> return self._run_one(actual_result)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(88)_run_one()
-> return self._run_prepared_result(ExtendedToOriginalDecorator(result))
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(100)_run_prepared_result()
-> self._run_core()
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(226)_run_core()
-> self._blocking_run_deferred, spinner)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(68)run_with_log_observers()
-> return function(*args, **kwargs)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(208)_blocking_run_deferred()
-> spinner.run, self._timeout, self._run_deferred)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(106)trap_unhandled_errors()
-> result = function(*args, **kwargs)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(51)decorated()
-> return function(*args, **kwargs)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(307)run()
-> self._reactor.run()
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(1157)run()
-> self.startRunning(installSignalHandlers=installSignalHandlers)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(1137)startRunning()
-> ReactorBase.startRunning(self)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(674)startRunning()
-> self.fireSystemEvent('startup')
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(628)fireSystemEvent()
-> event.fireEvent()
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(413)fireEvent()
-> DeferredList(beforeResults).addCallback(self._continueFiring)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(297)addCallback()
-> callbackKeywords=kw)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
-> self._runCallbacks()
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
-> current.result = callback(current.result, *args, **kw)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(426)_continueFiring()
-> callable(*args, **kwargs)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(302)run_function()
-> d = defer.maybeDeferred(function, *args, **kwargs)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(133)maybeDeferred()
-> result = f(*args, **kw)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(194)_run_deferred()
-> d.addCallback(set_up_done)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(297)addCallback()
-> callbackKeywords=kw)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
-> self._runCallbacks()
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
-> current.result = callback(current.result, *args, **kw)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(182)set_up_done()
-> d = self._run_user(self.case._run_test_method, self.result)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(262)_run_user()
-> return d.addErrback(self._got_user_failure)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(308)addErrback()
-> errbackKeywords=kw)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
-> self._runCallbacks()
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
-> current.result = callback(current.result, *args, **kw)
  /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(46)_got_user_failure()
-> (failure.type, failure.value, failure.getTracebackObject()),
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(466)getTracebackObject()
-> return _Traceback(self.frames)
  /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(94)__init__()
-> self.tb_frame = _Frame(name, filename)
> /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(120)__init__()
-> self.f_locals = {}

AttributeError: "can't set attribute"

** Affects: testtools
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of testtools
developers, which is subscribed to testtools.
https://bugs.launchpad.net/bugs/711209

Title:
  When running Twisted tests, failures are not reported

Status in testtools:
  New

Bug description:
  With this basic test case:

  {{{
  class TestBlah(TestCaseWithFactory):
      run_tests_with = AsynchronousDeferredRunTest.make_factory(timeout=10)
      def test_failing_test(self):
          self.assertFalse(True)
  }}}

  I don't see a failure reported.  Tracing through the code in pdb I can
  produce a "AttributeError: "can't set attribute"" at the backtrace
  below:

    /home/ed/canonical/lp-branches/double-build-bug-705342/bin/test(275)<module>()
  -> testrunner.run([])
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/__init__.py(32)run()
  -> failed = run_internal(defaults, args, script_parts=script_parts)
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/__init__.py(45)run_internal()
  -> runner.run()
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(138)run()
  -> self.run_tests()
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(219)run_tests()
  -> setup_layers, self.failures, self.errors)
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(377)run_layer()
  -> return run_tests(options, tests, layer_name, failures, errors)
    /home/ed/canonical/lp-sourcedeps/eggs/zope.testing-3.9.4_p3-py2.6.egg/zope/testing/testrunner/runner.py(309)run_tests()
  -> test(result)
    /usr/lib/python2.6/unittest.py(300)__call__()
  -> return self.run(*args, **kwds)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/testcase.py(450)run()
  -> return self.__RunTest(self, self.exception_handlers).run(result)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(74)run()
  -> return self._run_one(actual_result)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(88)_run_one()
  -> return self._run_prepared_result(ExtendedToOriginalDecorator(result))
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/runtest.py(100)_run_prepared_result()
  -> self._run_core()
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(226)_run_core()
  -> self._blocking_run_deferred, spinner)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(68)run_with_log_observers()
  -> return function(*args, **kwargs)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(208)_blocking_run_deferred()
  -> spinner.run, self._timeout, self._run_deferred)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(106)trap_unhandled_errors()
  -> result = function(*args, **kwargs)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(51)decorated()
  -> return function(*args, **kwargs)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(307)run()
  -> self._reactor.run()
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(1157)run()
  -> self.startRunning(installSignalHandlers=installSignalHandlers)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(1137)startRunning()
  -> ReactorBase.startRunning(self)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(674)startRunning()
  -> self.fireSystemEvent('startup')
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(628)fireSystemEvent()
  -> event.fireEvent()
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(413)fireEvent()
  -> DeferredList(beforeResults).addCallback(self._continueFiring)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(297)addCallback()
  -> callbackKeywords=kw)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
  -> self._runCallbacks()
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
  -> current.result = callback(current.result, *args, **kw)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/base.py(426)_continueFiring()
  -> callable(*args, **kwargs)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/_spinner.py(302)run_function()
  -> d = defer.maybeDeferred(function, *args, **kwargs)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(133)maybeDeferred()
  -> result = f(*args, **kw)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(194)_run_deferred()
  -> d.addCallback(set_up_done)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(297)addCallback()
  -> callbackKeywords=kw)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
  -> self._runCallbacks()
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
  -> current.result = callback(current.result, *args, **kw)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(182)set_up_done()
  -> d = self._run_user(self.case._run_test_method, self.result)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(262)_run_user()
  -> return d.addErrback(self._got_user_failure)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(308)addErrback()
  -> errbackKeywords=kw)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(286)addCallbacks()
  -> self._runCallbacks()
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/internet/defer.py(542)_runCallbacks()
  -> current.result = callback(current.result, *args, **kw)
    /home/ed/canonical/lp-sourcedeps/eggs/testtools-0.9.8-py2.6.egg/testtools/deferredruntest.py(46)_got_user_failure()
  -> (failure.type, failure.value, failure.getTracebackObject()),
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(466)getTracebackObject()
  -> return _Traceback(self.frames)
    /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(94)__init__()
  -> self.tb_frame = _Frame(name, filename)
  > /home/ed/canonical/lp-sourcedeps/eggs/Twisted-10.2.0_4395fix_1-py2.6-linux-x86_64.egg/twisted/python/failure.py(120)__init__()
  -> self.f_locals = {}

  AttributeError: "can't set attribute"





Follow ups

References