1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-26 06:23:41 +00:00

send_catch_log: pass through results from sendRobust

This commit is contained in:
Pablo Hoffman 2009-08-22 16:38:25 -03:00
parent 499dc6677c
commit de89909195
2 changed files with 10 additions and 4 deletions

View File

@ -18,6 +18,7 @@ class SignalUtilsTest(unittest.TestCase):
def test_handler_check(arg): def test_handler_check(arg):
handlers_called.add(test_handler_check) handlers_called.add(test_handler_check)
assert arg == 'test' assert arg == 'test'
return "OK"
def log_received(message, level): def log_received(message, level):
handlers_called.add(log_received) handlers_called.add(log_received)
@ -27,11 +28,14 @@ class SignalUtilsTest(unittest.TestCase):
dispatcher.connect(log_received, signal=log.logmessage_received) dispatcher.connect(log_received, signal=log.logmessage_received)
dispatcher.connect(test_handler_error, signal=test_signal) dispatcher.connect(test_handler_error, signal=test_signal)
dispatcher.connect(test_handler_check, signal=test_signal) dispatcher.connect(test_handler_check, signal=test_signal)
send_catch_log(test_signal, arg='test') result = send_catch_log(test_signal, arg='test')
assert test_handler_error in handlers_called assert test_handler_error in handlers_called
assert test_handler_check in handlers_called assert test_handler_check in handlers_called
assert log_received in handlers_called assert log_received in handlers_called
self.assertEqual(result[0][0], test_handler_error)
self.assert_(isinstance(result[0][1], Exception))
self.assertEqual(result[1], (test_handler_check, "OK"))
dispatcher.disconnect(log_received, signal=log.logmessage_received) dispatcher.disconnect(log_received, signal=log.logmessage_received)
dispatcher.disconnect(test_handler_error, signal=test_signal) dispatcher.disconnect(test_handler_error, signal=test_signal)

View File

@ -8,7 +8,9 @@ def send_catch_log(*args, **kwargs):
"""Same as dispatcher.robust.sendRobust but logs any exceptions raised by """Same as dispatcher.robust.sendRobust but logs any exceptions raised by
the signal handlers the signal handlers
""" """
for receiver, result in sendRobust(*args, **kwargs): results = sendRobust(*args, **kwargs)
if isinstance(result, Exception): for receiver, response in results:
if isinstance(response, Exception):
log.msg("Exception caught on signal dispatch: receiver=%r, " \ log.msg("Exception caught on signal dispatch: receiver=%r, " \
" exception=%r" % (receiver, result), level=log.ERROR) " exception=%r" % (receiver, response), level=log.ERROR)
return results