Merge pull request #4008 from elacuesta/docs_request_errback

Request: remove restriction about errback without callback
This commit is contained in:
Mikhail Korobov 2020-01-23 23:12:44 +05:00 committed by GitHub
commit f80c7776ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 16 deletions

View File

@ -31,7 +31,6 @@ class Request(object_ref):
raise TypeError('callback must be a callable, got %s' % type(callback).__name__)
if errback is not None and not callable(errback):
raise TypeError('errback must be a callable, got %s' % type(errback).__name__)
assert callback or not errback, "Cannot use errback without a callback"
self.callback = callback
self.errback = errback

View File

@ -244,25 +244,41 @@ class RequestTest(unittest.TestCase):
self.assertRaises(AttributeError, setattr, r, 'url', 'http://example2.com')
self.assertRaises(AttributeError, setattr, r, 'body', 'xxx')
def test_callback_is_callable(self):
def test_callback_and_errback(self):
def a_function():
pass
r = self.request_class('http://example.com')
self.assertIsNone(r.callback)
r = self.request_class('http://example.com', a_function)
self.assertIs(r.callback, a_function)
with self.assertRaises(TypeError):
self.request_class('http://example.com', 'a_function')
def test_errback_is_callable(self):
def a_function():
pass
r = self.request_class('http://example.com')
self.assertIsNone(r.errback)
r = self.request_class('http://example.com', a_function, errback=a_function)
self.assertIs(r.errback, a_function)
r1 = self.request_class('http://example.com')
self.assertIsNone(r1.callback)
self.assertIsNone(r1.errback)
r2 = self.request_class('http://example.com', callback=a_function)
self.assertIs(r2.callback, a_function)
self.assertIsNone(r2.errback)
r3 = self.request_class('http://example.com', errback=a_function)
self.assertIsNone(r3.callback)
self.assertIs(r3.errback, a_function)
r4 = self.request_class(
url='http://example.com',
callback=a_function,
errback=a_function,
)
self.assertIs(r4.callback, a_function)
self.assertIs(r4.errback, a_function)
def test_callback_and_errback_type(self):
with self.assertRaises(TypeError):
self.request_class('http://example.com', a_function, errback='a_function')
self.request_class('http://example.com', callback='a_function')
with self.assertRaises(TypeError):
self.request_class('http://example.com', errback='a_function')
with self.assertRaises(TypeError):
self.request_class(
url='http://example.com',
callback='a_function',
errback='a_function',
)
def test_from_curl(self):
# Note: more curated tests regarding curl conversion are in