launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #22727
[Merge] lp:~cjwatson/launchpad/twisted-18.4.0 into lp:launchpad
Colin Watson has proposed merging lp:~cjwatson/launchpad/twisted-18.4.0 into lp:launchpad.
Commit message:
Upgrade to Twisted 18.4.0.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/twisted-18.4.0/+merge/349244
--
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad/twisted-18.4.0 into lp:launchpad.
=== modified file 'constraints.txt'
--- constraints.txt 2018-07-03 09:17:30 +0000
+++ constraints.txt 2018-07-10 08:34:45 +0000
@@ -359,8 +359,12 @@
testresources==0.2.7
testscenarios==0.4
timeline==0.0.3
+<<<<<<< TREE
treq==18.6.0
Twisted[conch,tls]==17.9.0
+=======
+Twisted[conch,tls]==18.4.0
+>>>>>>> MERGE-SOURCE
txAMQP==0.6.2
txfixtures==0.4.2
txlongpoll==0.2.12
=== modified file 'lib/lp/services/twistedsupport/tests/test_gracefulshutdown.py'
--- lib/lp/services/twistedsupport/tests/test_gracefulshutdown.py 2017-12-21 17:27:18 +0000
+++ lib/lp/services/twistedsupport/tests/test_gracefulshutdown.py 2018-07-10 08:34:45 +0000
@@ -1,14 +1,17 @@
-# Copyright 2011 Canonical Ltd. This software is licensed under the
+# Copyright 2011-2018 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Tests for our graceful daemon shutdown support."""
__metaclass__ = type
+import io
+
from twisted.application import service
from twisted.internet.defer import Deferred
from twisted.internet.protocol import (
Factory,
+ FileWrapper,
Protocol,
)
from twisted.web import http
@@ -99,7 +102,10 @@
def make_dummy_http_request(self):
"""Make a dummy HTTP request for tests."""
- return http.Request(http.HTTPChannel(), True)
+ transport = FileWrapper(io.BytesIO())
+ channel = http.HTTPChannel()
+ channel.makeConnection(transport)
+ return http.Request(channel, True)
def test_200_when_available(self):
"""When the factory is available a 200 response is generated."""
=== modified file 'lib/lp/services/twistedsupport/tests/test_xmlrpc.py'
--- lib/lp/services/twistedsupport/tests/test_xmlrpc.py 2018-04-05 17:03:54 +0000
+++ lib/lp/services/twistedsupport/tests/test_xmlrpc.py 2018-07-10 08:34:45 +0000
@@ -5,6 +5,12 @@
__metaclass__ = type
+import sys
+
+from testtools.matchers import (
+ LessThan,
+ Not,
+ )
from twisted.python.failure import Failure
from lp.services.twistedsupport import extract_result
@@ -49,30 +55,31 @@
except:
return Failure()
- def assertRaisesExactException(self, exception, function, *args, **kwargs):
+ def assertRaisesFailure(self, failure, function, *args, **kwargs):
try:
function(*args, **kwargs)
+ except Failure as raised_failure:
+ self.assertThat(sys.version_info, LessThan((3, 0)))
+ self.assertEqual(failure, raised_failure)
except Exception as raised_exception:
- self.assertEqual(raised_exception, exception)
+ self.assertThat(sys.version_info, Not(LessThan((3, 0))))
+ self.assertEqual(failure.value, raised_exception)
def test_raises_non_faults(self):
- # trap_fault re-raises the underlying exception from any failures it
- # gets that aren't faults.
+ # trap_fault re-raises any failures it gets that aren't faults.
failure = self.makeFailure(RuntimeError, 'example failure')
- self.assertRaisesExactException(
- failure.value, trap_fault, failure, TestFaultOne)
+ self.assertRaisesFailure(failure, trap_fault, failure, TestFaultOne)
def test_raises_faults_with_wrong_code(self):
- # trap_fault re-raises the underlying exception from any failures it
- # gets that are faults but have the wrong fault code.
+ # trap_fault re-raises any failures it gets that are faults but have
+ # the wrong fault code.
failure = self.makeFailure(TestFaultOne)
- self.assertRaisesExactException(
- failure.value, trap_fault, failure, TestFaultTwo)
+ self.assertRaisesFailure(failure, trap_fault, failure, TestFaultTwo)
def test_raises_faults_if_no_codes_given(self):
# If trap_fault is not given any fault codes, it re-raises the fault.
failure = self.makeFailure(TestFaultOne)
- self.assertRaisesExactException(failure.value, trap_fault, failure)
+ self.assertRaisesFailure(failure, trap_fault, failure)
def test_returns_fault_if_code_matches(self):
# trap_fault returns the Fault inside the Failure if the fault code
=== modified file 'lib/lp/services/twistedsupport/xmlrpc.py'
--- lib/lp/services/twistedsupport/xmlrpc.py 2018-04-05 17:03:54 +0000
+++ lib/lp/services/twistedsupport/xmlrpc.py 2018-07-10 08:34:45 +0000
@@ -10,6 +10,8 @@
'trap_fault',
]
+import sys
+
from twisted.internet import defer
from twisted.web import xmlrpc
@@ -55,13 +57,17 @@
:param failure: A Twisted L{Failure}.
:param *fault_codes: `LaunchpadFault` subclasses.
- :raise Exception: the underlying exception from 'failure' if 'failure'
- is not a Fault failure, or if the fault code does not match the
- given codes.
+ :raise Exception: if 'failure' is not a Fault failure, or if the fault
+ code does not match the given codes. In line with L{Failure.trap},
+ the exception is the L{Failure} itself on Python 2 and the
+ underlying exception on Python 3.
:return: The Fault if it matches one of the codes.
"""
failure.trap(xmlrpc.Fault)
fault = failure.value
if fault.faultCode in [cls.error_code for cls in fault_classes]:
return fault
- failure.raiseException()
+ if sys.version_info >= (3, 0):
+ failure.raiseException()
+ else:
+ raise failure
Follow ups