2017-10-28 16:48:41 +05:30
|
|
|
# Tox (https://tox.readthedocs.io/) is a tool for running tests
|
2012-06-28 12:43:12 -07:00
|
|
|
# in multiple virtualenvs. This configuration file will run the
|
|
|
|
# test suite on all supported python versions. To use it, "pip install tox"
|
|
|
|
# and then run "tox" from this directory.
|
|
|
|
|
|
|
|
[tox]
|
2023-02-02 06:52:01 +01:00
|
|
|
envlist = pre-commit,pylint,typing,py
|
2019-11-20 07:57:09 +01:00
|
|
|
minversion = 1.7.0
|
2012-06-28 12:43:12 -07:00
|
|
|
|
2024-03-13 03:22:48 -03:00
|
|
|
[test-requirements]
|
|
|
|
deps =
|
|
|
|
attrs
|
2025-01-07 19:40:25 +05:00
|
|
|
coverage >= 7.4.0
|
2024-03-13 03:22:48 -03:00
|
|
|
pexpect >= 4.8.0
|
2024-10-22 19:07:21 +05:00
|
|
|
pyftpdlib >= 2.0.1
|
2024-03-13 03:22:48 -03:00
|
|
|
pygments
|
2025-02-03 19:11:47 +04:00
|
|
|
pytest != 8.2.* # https://github.com/pytest-dev/pytest/issues/12275
|
2025-01-07 19:11:10 +05:00
|
|
|
pytest-cov >= 4.0.0
|
2024-03-13 03:22:48 -03:00
|
|
|
pytest-xdist
|
|
|
|
sybil >= 1.3.0 # https://github.com/cjw296/sybil/issues/20#issuecomment-605433422
|
|
|
|
testfixtures
|
|
|
|
pywin32; sys_platform == "win32"
|
|
|
|
|
2012-06-28 12:43:12 -07:00
|
|
|
[testenv]
|
2013-07-09 00:26:59 +06:00
|
|
|
deps =
|
2024-03-13 03:22:48 -03:00
|
|
|
{[test-requirements]deps}
|
|
|
|
|
2020-10-30 21:34:15 +01:00
|
|
|
# mitmproxy does not support PyPy
|
2024-01-06 01:35:56 +04:00
|
|
|
mitmproxy; implementation_name != 'pypy'
|
2025-01-07 19:40:25 +05:00
|
|
|
setenv =
|
|
|
|
COVERAGE_CORE=sysmon
|
2016-02-15 16:20:13 +03:00
|
|
|
passenv =
|
2016-02-15 17:50:47 +03:00
|
|
|
S3_TEST_FILE_URI
|
2016-02-15 16:20:13 +03:00
|
|
|
AWS_ACCESS_KEY_ID
|
|
|
|
AWS_SECRET_ACCESS_KEY
|
2021-07-19 12:00:42 +08:00
|
|
|
AWS_SESSION_TOKEN
|
2017-09-13 16:24:04 +09:00
|
|
|
GCS_TEST_FILE_URI
|
|
|
|
GCS_PROJECT_ID
|
2020-10-02 01:05:45 +07:00
|
|
|
#allow tox virtualenv to upgrade pip/wheel/setuptools
|
2021-01-01 19:13:39 -03:00
|
|
|
download = true
|
2012-06-28 12:43:12 -07:00
|
|
|
commands =
|
2025-01-07 19:11:10 +05:00
|
|
|
pytest --cov-config=pyproject.toml --cov=scrapy --cov-report=xml --cov-report= {posargs:--durations=10 docs scrapy tests} --doctest-modules
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command =
|
2023-01-20 10:54:46 -03:00
|
|
|
python -I -m pip install -ctests/upper-constraints.txt {opts} {packages}
|
2013-07-09 00:26:59 +06:00
|
|
|
|
2020-06-18 13:52:04 -03:00
|
|
|
[testenv:typing]
|
|
|
|
basepython = python3
|
|
|
|
deps =
|
2024-12-29 16:45:26 +05:00
|
|
|
mypy==1.14.0
|
2024-07-11 12:20:36 +05:00
|
|
|
typing-extensions==4.12.2
|
2024-12-29 16:45:26 +05:00
|
|
|
types-lxml==2024.12.13
|
2024-05-28 12:27:49 +04:00
|
|
|
types-Pygments==2.18.0.20240506
|
2024-12-29 16:45:26 +05:00
|
|
|
botocore-stubs==1.35.90
|
|
|
|
boto3-stubs[s3]==1.35.90
|
2024-05-28 12:27:49 +04:00
|
|
|
attrs >= 18.2.0
|
|
|
|
Pillow >= 10.3.0
|
2024-08-23 15:48:01 +05:00
|
|
|
pyOpenSSL >= 24.2.1
|
2024-05-28 12:27:49 +04:00
|
|
|
pytest >= 8.2.0
|
2024-06-05 22:09:19 +05:00
|
|
|
w3lib >= 2.2.0
|
2020-06-18 13:52:04 -03:00
|
|
|
commands =
|
2023-07-22 23:19:25 +04:00
|
|
|
mypy {posargs: scrapy tests}
|
2020-06-18 13:52:04 -03:00
|
|
|
|
2024-05-13 13:55:45 +04:00
|
|
|
[testenv:typing-tests]
|
2024-10-16 08:03:16 +00:00
|
|
|
basepython = python3.9
|
2024-05-13 13:55:45 +04:00
|
|
|
deps =
|
|
|
|
{[test-requirements]deps}
|
|
|
|
{[testenv:typing]deps}
|
|
|
|
pytest-mypy-testing==0.1.3
|
|
|
|
commands =
|
|
|
|
pytest {posargs: tests_typing}
|
|
|
|
|
2023-02-02 06:37:40 +01:00
|
|
|
[testenv:pre-commit]
|
2019-11-20 07:57:09 +01:00
|
|
|
basepython = python3
|
|
|
|
deps =
|
2023-02-02 06:37:40 +01:00
|
|
|
pre-commit
|
2019-11-20 07:57:09 +01:00
|
|
|
commands =
|
2023-02-02 06:37:40 +01:00
|
|
|
pre-commit run {posargs:--all-files}
|
2020-06-14 06:45:27 -03:00
|
|
|
|
2019-12-18 15:43:40 +01:00
|
|
|
[testenv:pylint]
|
2023-01-20 10:54:46 -03:00
|
|
|
basepython = python3
|
2019-12-18 15:43:40 +01:00
|
|
|
deps =
|
2021-05-11 09:04:53 +02:00
|
|
|
{[testenv:extra-deps]deps}
|
2024-12-29 14:29:27 +05:00
|
|
|
pylint==3.3.3
|
2019-12-18 15:43:40 +01:00
|
|
|
commands =
|
2024-11-19 19:51:15 +05:30
|
|
|
pylint conftest.py docs extras scrapy tests
|
2019-11-20 07:57:09 +01:00
|
|
|
|
2022-10-02 20:27:24 +05:00
|
|
|
[testenv:twinecheck]
|
|
|
|
basepython = python3
|
|
|
|
deps =
|
2024-12-29 14:29:27 +05:00
|
|
|
twine==6.0.1
|
|
|
|
build==1.2.2.post1
|
2022-10-02 20:27:24 +05:00
|
|
|
commands =
|
2023-01-20 10:54:46 -03:00
|
|
|
python -m build --sdist
|
2022-10-02 20:27:24 +05:00
|
|
|
twine check dist/*
|
|
|
|
|
2020-07-02 20:10:08 +02:00
|
|
|
[pinned]
|
2024-10-16 08:03:16 +00:00
|
|
|
basepython = python3.9
|
2019-08-07 04:36:52 -03:00
|
|
|
deps =
|
2024-10-16 08:03:16 +00:00
|
|
|
cryptography==37.0.0
|
2019-08-07 04:36:52 -03:00
|
|
|
cssselect==0.9.1
|
2021-03-26 10:45:26 -03:00
|
|
|
h2==3.0
|
2020-06-14 06:45:27 -03:00
|
|
|
itemadapter==0.1.0
|
2019-08-07 04:36:52 -03:00
|
|
|
parsel==1.5.0
|
2019-09-09 08:12:32 +00:00
|
|
|
Protego==0.1.15
|
2024-10-16 08:03:16 +00:00
|
|
|
pyOpenSSL==22.0.0
|
2019-08-07 04:36:52 -03:00
|
|
|
queuelib==1.4.2
|
2022-09-24 14:58:14 -04:00
|
|
|
service_identity==18.1.0
|
2024-10-16 08:03:16 +00:00
|
|
|
Twisted[http2]==21.7.0
|
2019-08-07 04:36:52 -03:00
|
|
|
w3lib==1.17.0
|
2022-06-09 00:25:03 -03:00
|
|
|
zope.interface==5.1.0
|
2024-10-16 08:03:16 +00:00
|
|
|
lxml==4.6.0
|
2024-03-13 03:22:48 -03:00
|
|
|
{[test-requirements]deps}
|
2020-10-30 21:34:15 +01:00
|
|
|
|
2024-01-06 01:35:56 +04:00
|
|
|
# mitmproxy 8.0.0 requires upgrading some of the pinned dependencies
|
2020-10-30 21:34:15 +01:00
|
|
|
# above, hence we do not install it in pinned environments at the moment
|
2020-11-23 22:10:45 +01:00
|
|
|
setenv =
|
2020-11-23 23:53:03 +01:00
|
|
|
_SCRAPY_PINNED=true
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command =
|
2023-01-20 10:54:46 -03:00
|
|
|
python -I -m pip install {opts} {packages}
|
2023-04-21 01:29:57 -06:00
|
|
|
commands =
|
2025-01-23 12:22:18 +04:00
|
|
|
; tests for docs fail with parsel < 1.8.0
|
2025-01-07 19:11:10 +05:00
|
|
|
pytest --cov-config=pyproject.toml --cov=scrapy --cov-report=xml --cov-report= {posargs:--durations=10 scrapy tests}
|
2016-01-13 12:47:42 +01:00
|
|
|
|
2020-07-02 20:10:08 +02:00
|
|
|
[testenv:pinned]
|
2024-05-14 18:54:11 +02:00
|
|
|
basepython = {[pinned]basepython}
|
2020-07-02 20:10:08 +02:00
|
|
|
deps =
|
|
|
|
{[pinned]deps}
|
2020-10-30 10:28:42 +01:00
|
|
|
PyDispatcher==2.0.5
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command = {[pinned]install_command}
|
2020-11-23 22:10:45 +01:00
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
2023-04-21 01:29:57 -06:00
|
|
|
commands = {[pinned]commands}
|
2021-01-01 19:13:39 -03:00
|
|
|
|
2020-07-02 20:10:08 +02:00
|
|
|
[testenv:windows-pinned]
|
2024-05-14 18:54:11 +02:00
|
|
|
basepython = {[pinned]basepython}
|
2020-07-02 20:10:08 +02:00
|
|
|
deps =
|
|
|
|
{[pinned]deps}
|
2020-10-30 10:28:42 +01:00
|
|
|
PyDispatcher==2.0.5
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command = {[pinned]install_command}
|
2020-11-23 22:10:45 +01:00
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
2023-04-21 01:29:57 -06:00
|
|
|
commands = {[pinned]commands}
|
2020-07-02 20:10:08 +02:00
|
|
|
|
2019-11-20 07:57:09 +01:00
|
|
|
[testenv:extra-deps]
|
2023-01-20 10:54:46 -03:00
|
|
|
basepython = python3
|
2019-11-07 14:05:01 +01:00
|
|
|
deps =
|
|
|
|
{[testenv]deps}
|
2023-03-15 16:03:44 +01:00
|
|
|
boto3
|
2022-05-20 08:30:06 +02:00
|
|
|
google-cloud-storage
|
2019-11-20 07:57:09 +01:00
|
|
|
robotexclusionrulesparser
|
2023-03-15 16:03:44 +01:00
|
|
|
Pillow
|
|
|
|
Twisted[http2]
|
2024-03-13 03:22:48 -03:00
|
|
|
uvloop; platform_system != "Windows"
|
|
|
|
bpython # optional for shell wrapper tests
|
|
|
|
brotli; implementation_name != 'pypy' # optional for HTTP compress downloader middleware tests
|
|
|
|
brotlicffi; implementation_name == 'pypy' # optional for HTTP compress downloader middleware tests
|
|
|
|
zstandard; implementation_name != 'pypy' # optional for HTTP compress downloader middleware tests
|
|
|
|
ipython
|
2023-03-15 16:03:44 +01:00
|
|
|
|
|
|
|
[testenv:extra-deps-pinned]
|
2024-05-14 18:54:11 +02:00
|
|
|
basepython = {[pinned]basepython}
|
2023-03-15 16:03:44 +01:00
|
|
|
deps =
|
|
|
|
{[pinned]deps}
|
2023-03-16 17:20:22 +01:00
|
|
|
boto3==1.20.0
|
2023-03-15 16:03:44 +01:00
|
|
|
google-cloud-storage==1.29.0
|
|
|
|
Pillow==7.1.0
|
|
|
|
robotexclusionrulesparser==1.6.2
|
2024-03-01 04:07:38 -06:00
|
|
|
brotlipy
|
2024-03-13 03:22:48 -03:00
|
|
|
uvloop==0.14.0; platform_system != "Windows"
|
|
|
|
bpython==0.7.1
|
|
|
|
zstandard==0.1; implementation_name != 'pypy'
|
|
|
|
ipython==2.0.0
|
|
|
|
brotli==0.5.2; implementation_name != 'pypy'
|
|
|
|
brotlicffi==0.8.0; implementation_name == 'pypy'
|
2023-03-15 16:03:44 +01:00
|
|
|
install_command = {[pinned]install_command}
|
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
2023-06-13 19:34:26 +04:00
|
|
|
commands = {[pinned]commands}
|
2019-11-07 14:05:01 +01:00
|
|
|
|
2020-07-16 23:19:24 +02:00
|
|
|
[testenv:asyncio]
|
|
|
|
commands =
|
|
|
|
{[testenv]commands} --reactor=asyncio
|
|
|
|
|
|
|
|
[testenv:asyncio-pinned]
|
2024-05-14 18:54:11 +02:00
|
|
|
basepython = {[pinned]basepython}
|
2020-10-07 11:26:53 +07:00
|
|
|
deps = {[testenv:pinned]deps}
|
2023-04-21 01:29:57 -06:00
|
|
|
commands = {[pinned]commands} --reactor=asyncio
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command = {[pinned]install_command}
|
2020-11-23 22:10:45 +01:00
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
2020-07-16 23:19:24 +02:00
|
|
|
|
|
|
|
[testenv:pypy3]
|
|
|
|
basepython = pypy3
|
|
|
|
commands =
|
2025-01-23 12:22:18 +04:00
|
|
|
; not enabling coverage as it significantly increases the run time
|
2021-10-24 10:52:56 +07:00
|
|
|
pytest {posargs:--durations=10 docs scrapy tests}
|
2020-07-16 23:19:24 +02:00
|
|
|
|
2025-01-23 12:22:18 +04:00
|
|
|
[testenv:pypy3-extra-deps]
|
|
|
|
basepython = pypy3
|
|
|
|
deps =
|
|
|
|
{[testenv:extra-deps]deps}
|
|
|
|
commands = {[testenv:pypy3]commands}
|
|
|
|
|
2020-07-16 23:19:24 +02:00
|
|
|
[testenv:pypy3-pinned]
|
2025-01-23 12:22:18 +04:00
|
|
|
basepython = pypy3.10
|
2020-07-16 23:19:24 +02:00
|
|
|
deps =
|
2025-01-23 12:22:18 +04:00
|
|
|
cryptography==41.0.5
|
|
|
|
cssselect==0.9.1
|
|
|
|
h2==3.1
|
|
|
|
itemadapter==0.1.0
|
|
|
|
parsel==1.5.0
|
|
|
|
Protego==0.1.15
|
|
|
|
pyOpenSSL==23.3.0
|
|
|
|
queuelib==1.4.2
|
|
|
|
service_identity==18.1.0
|
|
|
|
Twisted[http2]==21.7.0
|
|
|
|
w3lib==1.17.0
|
|
|
|
zope.interface==5.1.0
|
|
|
|
lxml==4.6.0
|
|
|
|
{[test-requirements]deps}
|
2020-10-07 11:26:53 +07:00
|
|
|
PyPyDispatcher==2.1.0
|
2023-04-21 01:29:57 -06:00
|
|
|
commands =
|
2025-01-23 12:22:18 +04:00
|
|
|
; disabling both coverage and docs tests
|
2024-05-14 18:54:11 +02:00
|
|
|
pytest {posargs:--durations=10 scrapy tests}
|
2021-02-08 21:51:57 +01:00
|
|
|
install_command = {[pinned]install_command}
|
2020-11-23 22:10:45 +01:00
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
2020-07-16 23:19:24 +02:00
|
|
|
|
2015-05-14 20:41:55 -03:00
|
|
|
[docs]
|
2014-04-09 18:46:01 -03:00
|
|
|
changedir = docs
|
|
|
|
deps =
|
2017-03-20 22:21:08 +05:30
|
|
|
-rdocs/requirements.txt
|
2020-04-16 14:48:38 +02:00
|
|
|
setenv =
|
|
|
|
READTHEDOCS_PROJECT=scrapy
|
|
|
|
READTHEDOCS_VERSION=master
|
2015-05-14 20:41:55 -03:00
|
|
|
|
|
|
|
[testenv:docs]
|
2019-12-18 15:50:49 +01:00
|
|
|
basepython = python3
|
2015-05-14 20:41:55 -03:00
|
|
|
changedir = {[docs]changedir}
|
|
|
|
deps = {[docs]deps}
|
2020-04-16 14:48:38 +02:00
|
|
|
setenv = {[docs]setenv}
|
2014-04-09 18:46:01 -03:00
|
|
|
commands =
|
2015-05-14 20:40:12 -03:00
|
|
|
sphinx-build -W -b html . {envtmpdir}/html
|
2015-05-14 20:41:55 -03:00
|
|
|
|
2019-01-04 18:17:35 +01:00
|
|
|
[testenv:docs-coverage]
|
2019-12-18 15:50:49 +01:00
|
|
|
basepython = python3
|
2019-01-04 18:17:35 +01:00
|
|
|
changedir = {[docs]changedir}
|
|
|
|
deps = {[docs]deps}
|
2020-04-16 14:48:38 +02:00
|
|
|
setenv = {[docs]setenv}
|
2019-01-04 18:17:35 +01:00
|
|
|
commands =
|
|
|
|
sphinx-build -b coverage . {envtmpdir}/coverage
|
|
|
|
|
2015-05-14 20:41:55 -03:00
|
|
|
[testenv:docs-links]
|
2019-12-18 15:50:49 +01:00
|
|
|
basepython = python3
|
2015-05-14 20:41:55 -03:00
|
|
|
changedir = {[docs]changedir}
|
|
|
|
deps = {[docs]deps}
|
2020-04-16 14:48:38 +02:00
|
|
|
setenv = {[docs]setenv}
|
2015-05-14 20:41:55 -03:00
|
|
|
commands =
|
2015-05-14 20:40:12 -03:00
|
|
|
sphinx-build -W -b linkcheck . {envtmpdir}/linkcheck
|
2023-03-15 16:03:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
# Run S3 tests with botocore installed but without boto3.
|
|
|
|
|
|
|
|
[testenv:botocore]
|
|
|
|
deps =
|
|
|
|
{[testenv]deps}
|
|
|
|
botocore>=1.4.87
|
|
|
|
commands =
|
2025-01-07 19:11:10 +05:00
|
|
|
pytest --cov-config=pyproject.toml --cov=scrapy --cov-report=xml --cov-report= {posargs:tests -m requires_botocore}
|
2023-03-15 16:03:44 +01:00
|
|
|
|
|
|
|
[testenv:botocore-pinned]
|
2024-05-14 18:54:11 +02:00
|
|
|
basepython = {[pinned]basepython}
|
2023-03-15 16:03:44 +01:00
|
|
|
deps =
|
|
|
|
{[pinned]deps}
|
|
|
|
botocore==1.4.87
|
|
|
|
install_command = {[pinned]install_command}
|
|
|
|
setenv =
|
|
|
|
{[pinned]setenv}
|
|
|
|
commands =
|
2025-01-07 19:11:10 +05:00
|
|
|
pytest --cov-config=pyproject.toml --cov=scrapy --cov-report=xml --cov-report= {posargs:tests -m requires_botocore}
|