From d2205988dc905c0a38dfbb277dc80423c2a814f0 Mon Sep 17 00:00:00 2001 From: binux Date: Mon, 21 Nov 2016 22:42:42 +0000 Subject: [PATCH] fix wrong reraise value, fix #578 --- pyspider/libs/response.py | 2 +- tests/test_response.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pyspider/libs/response.py b/pyspider/libs/response.py index 6d0932a3e..53807e436 100644 --- a/pyspider/libs/response.py +++ b/pyspider/libs/response.py @@ -167,7 +167,7 @@ def raise_for_status(self, allow_redirects=True): return elif self.error: if self.traceback: - six.reraise(Exception, self.error, Traceback.from_string(self.traceback).as_traceback()) + six.reraise(Exception, Exception(self.error), Traceback.from_string(self.traceback).as_traceback()) http_error = HTTPError(self.error) elif (self.status_code >= 300) and (self.status_code < 400) and not allow_redirects: http_error = HTTPError('%s Redirection' % (self.status_code)) diff --git a/tests/test_response.py b/tests/test_response.py index b51994958..934450370 100644 --- a/tests/test_response.py +++ b/tests/test_response.py @@ -88,3 +88,8 @@ def test_60_not_ok(self): response = self.get('/status/600') self.assertFalse(response.ok) self.assertFalse(response) + + def test_70_reraise_exception(self): + response = self.get('file://abc') + with self.assertRaisesRegexp(Exception, 'HTTP 599'): + response.raise_for_status()