Add tests for replace() with kwargs.

This commit is contained in:
Andrey Rakhmatullin 2023-12-20 16:14:53 +04:00
parent 1fab844f7d
commit a72394a388
2 changed files with 28 additions and 0 deletions

View File

@ -1,3 +1,5 @@
from typing import Any, Dict
import pytest
from scrapy import Request
@ -33,6 +35,9 @@ def mypy_test_copy():
req_copy = req.copy()
reveal_type(req_copy) # R: scrapy.http.request.Request
@pytest.mark.mypy_testing
def mypy_test_copy_subclass():
req = MyRequest("data:,")
reveal_type(req) # R: __main__.MyRequest
req_copy = req.copy()
@ -45,13 +50,22 @@ def mypy_test_replace():
reveal_type(req) # R: scrapy.http.request.Request
req_copy = req.replace(body=b"a")
reveal_type(req_copy) # R: scrapy.http.request.Request
kwargs: Dict[str, Any] = {}
req_copy2 = req.replace(body=b"a", **kwargs)
reveal_type(req_copy2) # R: Any
@pytest.mark.mypy_testing
def mypy_test_replace_subclass():
req = MyRequest("data:,")
reveal_type(req) # R: __main__.MyRequest
req_copy = req.replace(body=b"a")
reveal_type(req_copy) # R: __main__.MyRequest
req_copy2 = req.replace(body=b"a", cls=MyRequest2)
reveal_type(req_copy2) # R: __main__.MyRequest2
kwargs: Dict[str, Any] = {}
req_copy3 = req.replace(body=b"a", cls=MyRequest2, **kwargs)
reveal_type(req_copy3) # R: __main__.MyRequest2
@pytest.mark.mypy_testing

View File

@ -1,3 +1,5 @@
from typing import Any, Dict
import pytest
from scrapy.http import HtmlResponse, Response, TextResponse
@ -24,6 +26,9 @@ def mypy_test_copy():
resp_copy = resp.copy()
reveal_type(resp_copy) # R: scrapy.http.response.Response
@pytest.mark.mypy_testing
def mypy_test_copy_subclass():
resp = HtmlResponse("data:,")
reveal_type(resp) # R: scrapy.http.response.html.HtmlResponse
resp_copy = resp.copy()
@ -36,10 +41,19 @@ def mypy_test_replace():
reveal_type(resp) # R: scrapy.http.response.Response
resp_copy = resp.replace(body=b"a")
reveal_type(resp_copy) # R: scrapy.http.response.Response
kwargs: Dict[str, Any] = {}
resp_copy2 = resp.replace(body=b"a", **kwargs)
reveal_type(resp_copy2) # R: Any
@pytest.mark.mypy_testing
def mypy_test_replace_subclass():
resp = HtmlResponse("data:,")
reveal_type(resp) # R: scrapy.http.response.html.HtmlResponse
resp_copy = resp.replace(body=b"a")
reveal_type(resp_copy) # R: scrapy.http.response.html.HtmlResponse
resp_copy2 = resp.replace(body=b"a", cls=TextResponse)
reveal_type(resp_copy2) # R: scrapy.http.response.text.TextResponse
kwargs: Dict[str, Any] = {}
resp_copy3 = resp.replace(body=b"a", cls=TextResponse, **kwargs)
reveal_type(resp_copy3) # R: scrapy.http.response.text.TextResponse