mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-21 05:53:15 +00:00
Request: remove restriction about errback without callback
This commit is contained in:
parent
9b7452211a
commit
62778cf23f
@ -32,7 +32,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
|
||||
|
||||
|
@ -246,25 +246,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
|
||||
|
Loading…
x
Reference in New Issue
Block a user