r46836 - Merge suppress-error-8192: Suppress an unhandled error in DeferredResource.

mithrandi-TA+aISz0psMTMxyoc4vAAJOcrHinNvQL0E9HWUfgJXw@public.gmane.org
Newsgroups gmane.comp.python.twisted.commits
Message-ID <[email protected]>
Author: mithrandi
Date: Fri Feb 19 20:49:33 2016
New Revision: 46836

Added:
   trunk/twisted/web/topfiles/8192.bugfix
Modified:
   trunk/twisted/web/test/test_util.py
   trunk/twisted/web/util.py

Log:
Merge suppress-error-8192: Suppress an unhandled error in DeferredResource.

Author: mithrandi
Reviewer: adiroiban
Fixes: #8192

Modified: trunk/twisted/web/test/test_util.py
==============================================================================
--- trunk/twisted/web/test/test_util.py	(original)
+++ trunk/twisted/web/test/test_util.py	Fri Feb 19 20:49:33 2016
@@ -7,8 +7,10 @@
 
 from __future__ import absolute_import, division
 
+import gc
+
 from twisted.python.failure import Failure
-from twisted.trial.unittest import TestCase
+from twisted.trial.unittest import SynchronousTestCase, TestCase
 from twisted.internet import defer
 from twisted.python.compat import _PY3, intToBytes, networkString
 from twisted.web import resource, util
@@ -316,7 +318,7 @@
 
 
 
-class DeferredResourceTests(TestCase):
+class DeferredResourceTests(SynchronousTestCase):
     """
     Tests for L{DeferredResource}.
     """
@@ -344,3 +346,21 @@
         deferredResource = DeferredResource(defer.succeed(result))
         deferredResource.render(request)
         self.assertEqual(rendered, [result])
+
+
+    def test_renderNoFailure(self):
+        """
+        If the L{Deferred} fails, L{DeferredResource} reports the failure via
+        C{processingFailed}, and does not cause an unhandled error to be
+        logged.
+        """
+        request = DummyRequest([])
+        d = request.notifyFinish()
+        failure = Failure(RuntimeError())
+        deferredResource = DeferredResource(defer.fail(failure))
+        deferredResource.render(request)
+        self.assertEqual(self.failureResultOf(d), failure)
+        del deferredResource
+        gc.collect()
+        errors = self.flushLoggedErrors(RuntimeError)
+        self.assertEqual(errors, [])

Modified: trunk/twisted/web/util.py
==============================================================================
--- trunk/twisted/web/util.py	(original)
+++ trunk/twisted/web/util.py	Fri Feb 19 20:49:33 2016
@@ -145,7 +145,6 @@
 
     def _ebChild(self, reason, request):
         request.processingFailed(reason)
-        return reason
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.