Ignore min envs

This commit is contained in:
Adrian Chaves 2026-07-31 03:03:46 +02:00
parent 9759cea13b
commit 2f185eebe8
4 changed files with 20 additions and 24 deletions

View File

@ -359,6 +359,7 @@ markers = [
"requires_internet: marks tests that need real Internet access",
]
filterwarnings = [
# Envs with pinned old dependencies opt out of this, see tox.ini.
"error",
"ignore::DeprecationWarning:twisted.web.static",
# Twisted leaves the listening socket open after a failed bind
@ -372,12 +373,8 @@ filterwarnings = [
# queuelib's test helpers (reused by tests/test_squeues.py) leave queue
# files open; the resulting warning surfaces at an arbitrary GC point.
"ignore:.*<_io\\.FileIO name=.*queuelib-tests-:pytest.PytestUnraisableExceptionWarning",
# pyftpdlib imports the deprecated asyncore/asynchat modules on Python < 3.12.
"ignore:The async(ore|hat) module is deprecated:DeprecationWarning",
# Old w3lib (min env) compiles a regex with inline flags not at the start.
"ignore:Flags not at the start of the expression:DeprecationWarning",
# Old Twisted (min env) calls the deprecated threading.currentThread().
"ignore:currentThread\\(\\) is deprecated:DeprecationWarning",
# itemadapter imports pydantic.v1, which warns on Python 3.14 and higher.
"ignore:Core Pydantic V1 functionality isn't compatible:UserWarning",
]
[tool.ruff.lint]

View File

@ -1,3 +1,4 @@
scrapy/core/downloader/handlers/http.py
scrapy/extensions/statsmailer.py
scrapy/interfaces.py
scrapy/mail.py

View File

@ -162,6 +162,16 @@ class TestShellCommand:
assert ret == 0, out
def _stop(p: PopenSpawn[str]) -> None:
p.sendeof()
p.wait() # type: ignore[no-untyped-call]
# PopenSpawn leaves the subprocess pipes open, which triggers
# ResourceWarning at an arbitrary garbage collection point.
for pipe in (p.proc.stdin, p.proc.stdout):
if pipe:
pipe.close()
class TestInteractiveShell:
def test_fetch(self, mockserver: MockServer) -> None:
args = (
@ -179,12 +189,7 @@ class TestInteractiveShell:
p.sendline(f"fetch('{mockserver.url('/')}')")
p.sendline("type(response)")
p.expect_exact("HtmlResponse")
p.sendeof()
p.wait() # type: ignore[no-untyped-call]
if p.proc.stdin:
p.proc.stdin.close()
if p.proc.stdout:
p.proc.stdout.close()
_stop(p)
logfile.seek(0)
assert "Traceback" not in logfile.read().decode()
@ -210,12 +215,7 @@ class TestInteractiveShell:
p = PopenSpawn(args, env=env, timeout=5)
p.logfile_read = logfile
p.expect_exact("Available Scrapy objects")
p.sendeof()
p.wait() # type: ignore[no-untyped-call]
if p.proc.stdin:
p.proc.stdin.close()
if p.proc.stdout:
p.proc.stdout.close()
_stop(p)
logfile.seek(0)
return logfile.read().decode()
@ -240,12 +240,7 @@ class TestInteractiveShell:
# shell=python was honored, regardless of platform-specific prompts.
p.sendline("import sys; print('IPYMODULE', 'IPython' in sys.modules)")
p.expect_exact("IPYMODULE False")
p.sendeof()
p.wait() # type: ignore[no-untyped-call]
if p.proc.stdin:
p.proc.stdin.close()
if p.proc.stdout:
p.proc.stdout.close()
_stop(p)
logfile.seek(0)
assert "Traceback" not in logfile.read().decode()

View File

@ -147,6 +147,9 @@ deps =
{[test-requirements]deps}
setenv =
_SCRAPY_MIN=true
# Pinned old Python and library versions trigger warnings that we cannot
# fix, so these envs do not turn warnings into errors.
PYTEST_ADDOPTS=-W default {env:PYTEST_ADDOPTS:}
commands =
pytest {posargs:--cov-config=pyproject.toml --cov=scrapy --cov-report=xml --cov-report= --junitxml=min.junit.xml -o junit_family=legacy --durations=10 scrapy tests}