Merge pull request #3371 from StasDeep/fix/issue-3370

[MRG+1] Fix contract errback (#3370)
This commit is contained in:
Konstantin Lopuhin 2018-08-10 17:27:45 +03:00 committed by GitHub
commit 8a4e51a19b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View File

@ -84,7 +84,7 @@ class ContractsManager(object):
def eb_wrapper(failure):
case = _create_testcase(method, 'errback')
exc_info = failure.value, failure.type, failure.getTracebackObject()
exc_info = failure.type, failure.value, failure.getTracebackObject()
results.addError(case, exc_info)
request.callback = cb_wrapper

View File

@ -1,7 +1,9 @@
from unittest import TextTestResult
from twisted.python import failure
from twisted.trial import unittest
from scrapy.spidermiddlewares.httperror import HttpError
from scrapy.spiders import Spider
from scrapy.http import Request
from scrapy.item import Item, Field
@ -185,3 +187,18 @@ class ContractsManagerTest(unittest.TestCase):
self.results)
request.callback(response)
self.should_fail()
def test_errback(self):
spider = TestSpider()
response = ResponseMock()
try:
raise HttpError(response, 'Ignoring non-200 response')
except HttpError:
failure_mock = failure.Failure()
request = self.conman.from_method(spider.returns_request, self.results)
request.errback(failure_mock)
self.assertFalse(self.results.failures)
self.assertTrue(self.results.errors)