← Back to team overview

testtools-dev team mailing list archive

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

 

Turns out this is due to bad interaction between the band-aid for bug
425113 and testtools.

** Project changed: testtools => launchpad

** Changed in: launchpad
       Status: New => Triaged

** Changed in: launchpad
   Importance: Undecided => Critical

** Changed in: launchpad
     Assignee: (unassigned) => Jonathan Lange (jml)

** Changed in: launchpad
       Status: Triaged => In Progress

-- 
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 Launchpad itself:
  In Progress

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"





References