2016-03-09 05:16:36 +00:00
|
|
|
# Tox (http://tox.testrun.org/) is a tool for running tests
|
|
|
|
# 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.
|
|
|
|
|
2021-05-11 15:02:15 +00:00
|
|
|
# Map Python versions in GitHub Actions to tox environments to run, for use by
|
|
|
|
# the tox-gh-actions package.
|
2021-05-05 14:06:35 +00:00
|
|
|
[gh-actions]
|
|
|
|
python =
|
|
|
|
3.8: py38-coverage
|
2021-05-26 13:16:07 +00:00
|
|
|
3.9: py39-coverage
|
2022-02-23 16:07:56 +00:00
|
|
|
3.10: py310-coverage
|
2023-03-14 17:01:45 +00:00
|
|
|
3.11: py311-coverage
|
2023-11-15 18:09:17 +00:00
|
|
|
3.12: py312-coverage
|
2022-02-23 15:49:39 +00:00
|
|
|
pypy-3.8: pypy38
|
|
|
|
pypy-3.9: pypy39
|
2021-05-05 14:06:35 +00:00
|
|
|
|
2018-01-17 21:21:30 +00:00
|
|
|
[pytest]
|
|
|
|
twisted = 1
|
|
|
|
|
2016-03-09 05:16:36 +00:00
|
|
|
[tox]
|
2023-11-15 18:09:17 +00:00
|
|
|
envlist = typechecks,codechecks,py{38,39,310,311,312}-{coverage},pypy27,pypy38,pypy39,integration
|
2018-03-29 00:36:12 +00:00
|
|
|
minversion = 2.4
|
2016-03-09 05:16:36 +00:00
|
|
|
|
|
|
|
[testenv]
|
2023-11-16 22:54:34 +00:00
|
|
|
passenv = TAHOE_LAFS_*, PIP_*, SUBUNITREPORTER_*, USERPROFILE, HOMEDRIVE, HOMEPATH
|
2018-07-05 18:19:23 +00:00
|
|
|
deps =
|
2023-04-28 11:51:45 +00:00
|
|
|
# We pull in certify *here* to avoid bug #2913. Basically if a
|
|
|
|
# `setup_requires=...` causes a package to be installed (with setuptools)
|
|
|
|
# then it'll fail on certain platforms (travis's OX-X 10.12, Slackware
|
|
|
|
# 14.2) because PyPI's TLS requirements (TLS >= 1.2) are incompatible with
|
|
|
|
# the old TLS clients available to those systems. Installing it ahead of
|
|
|
|
# time (with pip) avoids this problem.
|
|
|
|
#
|
|
|
|
# We don't pin an exact version of it because it contains CA certificates
|
|
|
|
# which necessarily change over time. Pinning this is guaranteed to cause
|
|
|
|
# things to break eventually as old certificates expire and as new ones
|
|
|
|
# are used in the wild that aren't present in whatever version we pin.
|
|
|
|
# Hopefully there won't be functionality regressions in new releases of
|
|
|
|
# this package that cause us the kind of suffering we're trying to avoid
|
|
|
|
# with the above pins.
|
|
|
|
certifi
|
2019-04-26 17:41:08 +00:00
|
|
|
|
|
|
|
# We add usedevelop=False because testing against a true installation gives
|
|
|
|
# more useful results.
|
|
|
|
usedevelop = False
|
2023-04-28 11:52:05 +00:00
|
|
|
|
|
|
|
extras =
|
|
|
|
# Get general testing environment dependencies so we can run the tests
|
|
|
|
# how we like.
|
|
|
|
testenv
|
|
|
|
|
|
|
|
# And get all of the test suite's actual direct Python dependencies.
|
|
|
|
test
|
2020-08-14 15:16:45 +00:00
|
|
|
|
2020-08-26 18:36:09 +00:00
|
|
|
setenv =
|
|
|
|
# Define TEST_SUITE in the environment as an aid to constructing the
|
|
|
|
# correct test command below.
|
2021-05-07 17:25:57 +00:00
|
|
|
TEST_SUITE = allmydata
|
2020-08-26 18:36:09 +00:00
|
|
|
|
2020-08-14 15:19:01 +00:00
|
|
|
commands =
|
2020-08-27 14:40:27 +00:00
|
|
|
# As an aid to debugging, dump all of the Python packages and their
|
|
|
|
# versions that are installed in the test environment. This is
|
|
|
|
# particularly useful to get from CI runs - though hopefully the
|
|
|
|
# version pinning we do limits the variability of this output
|
2020-08-26 18:36:09 +00:00
|
|
|
pip freeze
|
|
|
|
|
2020-08-21 20:52:23 +00:00
|
|
|
tahoe --version
|
2020-07-03 21:35:48 +00:00
|
|
|
|
2021-09-22 19:51:26 +00:00
|
|
|
python -c "import sys; print('sys.stdout.encoding:', sys.stdout.encoding)"
|
2021-09-08 18:25:10 +00:00
|
|
|
|
2021-02-23 17:02:08 +00:00
|
|
|
# Run tests with -b to catch bugs like `"%s" % (some_bytes,)`. -b makes
|
|
|
|
# Python emit BytesWarnings, and warnings configuration in
|
|
|
|
# src/allmydata/tests/__init__.py turns allmydata's BytesWarnings into
|
|
|
|
# exceptions.
|
|
|
|
!coverage: python -b -m twisted.trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors} {posargs:{env:TEST_SUITE}}
|
2020-08-26 18:36:09 +00:00
|
|
|
|
2020-08-27 14:40:27 +00:00
|
|
|
# measuring coverage is somewhat slower than not measuring coverage
|
|
|
|
# so only do it on request.
|
2021-02-23 17:02:08 +00:00
|
|
|
coverage: python -b -m coverage run -m twisted.trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors --reporter=timing} {posargs:{env:TEST_SUITE}}
|
2020-08-27 14:40:27 +00:00
|
|
|
coverage: coverage combine
|
2020-08-26 18:36:09 +00:00
|
|
|
coverage: coverage xml
|
|
|
|
|
2016-08-22 23:36:56 +00:00
|
|
|
[testenv:integration]
|
2021-05-07 17:42:38 +00:00
|
|
|
basepython = python3
|
2022-02-22 16:26:00 +00:00
|
|
|
platform = mylinux: linux
|
|
|
|
mymacos: darwin
|
|
|
|
mywindows: win32
|
2021-05-07 17:42:38 +00:00
|
|
|
setenv =
|
|
|
|
COVERAGE_PROCESS_START=.coveragerc
|
|
|
|
commands =
|
|
|
|
# NOTE: 'run with "py.test --keep-tempdir -s -v integration/" to debug failures'
|
2022-05-13 16:58:55 +00:00
|
|
|
py.test --timeout=1800 --coverage -s -v {posargs:integration}
|
2021-05-07 17:42:38 +00:00
|
|
|
coverage combine
|
|
|
|
|
|
|
|
|
2022-02-15 19:33:00 +00:00
|
|
|
[testenv:codechecks]
|
2021-05-07 13:41:30 +00:00
|
|
|
basepython = python3
|
2023-04-17 14:33:31 +00:00
|
|
|
skip_install = true
|
2021-06-14 15:24:10 +00:00
|
|
|
deps =
|
2023-04-25 12:14:26 +00:00
|
|
|
# Pin a specific version so we get consistent outcomes; update this
|
|
|
|
# occasionally:
|
2023-09-05 13:44:48 +00:00
|
|
|
ruff == 0.0.287
|
2023-07-07 20:32:15 +00:00
|
|
|
# towncrier doesn't work with importlib_resources 6.0.0
|
|
|
|
# https://github.com/twisted/towncrier/issues/528
|
2023-09-05 13:44:48 +00:00
|
|
|
# Will be fixed in first version of Towncrier that is larger than 2023.6.
|
2023-07-07 20:32:15 +00:00
|
|
|
importlib_resources < 6.0.0
|
2023-04-17 14:33:31 +00:00
|
|
|
towncrier
|
2021-06-14 15:24:10 +00:00
|
|
|
# On macOS, git inside of towncrier needs $HOME.
|
|
|
|
passenv = HOME
|
2021-05-07 13:41:30 +00:00
|
|
|
setenv =
|
|
|
|
# If no positional arguments are given, try to run the checks on the
|
|
|
|
# entire codebase, including various pieces of supporting code.
|
2023-09-05 16:25:18 +00:00
|
|
|
DEFAULT_FILES=src integration benchmarks static misc setup.py
|
2021-05-07 13:41:30 +00:00
|
|
|
commands =
|
2023-04-17 14:21:20 +00:00
|
|
|
ruff check {posargs:{env:DEFAULT_FILES}}
|
2021-06-14 15:24:10 +00:00
|
|
|
python misc/coding_tools/check-umids.py {posargs:{env:DEFAULT_FILES}}
|
|
|
|
python misc/coding_tools/check-debugging.py {posargs:{env:DEFAULT_FILES}}
|
|
|
|
|
|
|
|
# If towncrier.check fails, you forgot to add a towncrier news
|
|
|
|
# fragment explaining the change in this branch. Create one at
|
|
|
|
# `newsfragments/<ticket>.<change type>` with some text for the news
|
2021-10-14 15:01:37 +00:00
|
|
|
# file. See towncrier.toml for legal <change type> values.
|
|
|
|
python -m towncrier.check --config towncrier.toml
|
2021-05-07 13:41:30 +00:00
|
|
|
|
|
|
|
|
2020-09-11 19:38:04 +00:00
|
|
|
[testenv:typechecks]
|
2021-02-03 15:19:41 +00:00
|
|
|
basepython = python3
|
2020-09-18 19:49:21 +00:00
|
|
|
deps =
|
2023-09-05 13:40:22 +00:00
|
|
|
mypy==1.5.1
|
2023-07-21 15:04:51 +00:00
|
|
|
mypy-zope
|
2021-06-10 15:03:01 +00:00
|
|
|
types-mock
|
|
|
|
types-six
|
|
|
|
types-PyYAML
|
|
|
|
types-pkg_resources
|
2022-03-25 19:52:31 +00:00
|
|
|
types-pyOpenSSL
|
2023-06-14 14:31:11 +00:00
|
|
|
foolscap
|
|
|
|
# Upgrade when new releases come out:
|
2023-09-05 13:40:22 +00:00
|
|
|
Twisted==23.8.0
|
2020-09-11 19:38:04 +00:00
|
|
|
commands = mypy src
|
|
|
|
|
|
|
|
|
2018-08-27 23:44:17 +00:00
|
|
|
[testenv:draftnews]
|
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH
|
|
|
|
deps =
|
2021-06-07 21:37:11 +00:00
|
|
|
# see comment in [testenv] about "certifi"
|
2021-06-07 19:35:12 +00:00
|
|
|
certifi
|
|
|
|
towncrier==21.3.0
|
2018-08-27 23:44:17 +00:00
|
|
|
commands =
|
2021-10-14 15:01:37 +00:00
|
|
|
python -m towncrier --draft --config towncrier.toml
|
2018-08-27 23:44:17 +00:00
|
|
|
|
2020-03-11 16:52:26 +00:00
|
|
|
[testenv:news]
|
2021-06-07 21:30:59 +00:00
|
|
|
# On macOS, git invoked from Tox needs $HOME.
|
2021-07-05 10:36:29 +00:00
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH HOME
|
2021-06-07 21:36:14 +00:00
|
|
|
whitelist_externals =
|
|
|
|
git
|
2020-03-11 16:52:26 +00:00
|
|
|
deps =
|
2021-08-13 13:24:00 +00:00
|
|
|
# see comment in [testenv] about "certifi"
|
2021-06-07 19:35:12 +00:00
|
|
|
certifi
|
|
|
|
towncrier==21.3.0
|
2020-03-11 16:52:26 +00:00
|
|
|
commands =
|
2021-10-14 15:01:37 +00:00
|
|
|
python -m towncrier --yes --config towncrier.toml
|
2021-06-07 19:35:12 +00:00
|
|
|
# commit the changes
|
|
|
|
git commit -m "update NEWS.txt for release"
|
2020-03-11 16:52:26 +00:00
|
|
|
|
2016-03-09 05:16:36 +00:00
|
|
|
[testenv:deprecations]
|
|
|
|
commands =
|
2019-08-03 00:29:04 +00:00
|
|
|
python misc/build_helpers/run-deprecations.py --package allmydata --warnings={env:TAHOE_LAFS_WARNINGS_LOG:_trial_temp/deprecation-warnings.log} trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors} {posargs:allmydata}
|
2016-03-09 05:17:51 +00:00
|
|
|
|
2016-04-06 19:24:15 +00:00
|
|
|
[testenv:upcoming-deprecations]
|
|
|
|
deps =
|
2018-07-06 14:12:44 +00:00
|
|
|
# Take the base deps as well!
|
|
|
|
{[testenv]deps}
|
2016-04-06 19:24:15 +00:00
|
|
|
git+https://github.com/warner/foolscap
|
|
|
|
commands =
|
2016-04-06 23:34:14 +00:00
|
|
|
flogtool --version
|
2019-08-03 00:29:04 +00:00
|
|
|
python misc/build_helpers/run-deprecations.py --package allmydata --warnings={env:TAHOE_LAFS_WARNINGS_LOG:_trial_temp/deprecation-warnings.log} trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors} {posargs:allmydata}
|
2016-04-06 19:24:15 +00:00
|
|
|
|
2016-03-31 22:59:49 +00:00
|
|
|
# Use 'tox -e docs' to check formatting and cross-references in docs .rst
|
|
|
|
# files. The published docs are built by code run over at readthedocs.org,
|
|
|
|
# which does not use this target (but does something similar).
|
|
|
|
#
|
|
|
|
# If you have "sphinx" installed in your virtualenv, you can just do "make -C
|
|
|
|
# docs html", or "cd docs; make html".
|
|
|
|
#
|
|
|
|
# You can also open docs/_build/html/index.html to see the rendered docs in
|
|
|
|
# your web browser.
|
|
|
|
|
|
|
|
[testenv:docs]
|
2016-12-12 20:57:08 +00:00
|
|
|
deps =
|
2021-10-28 15:12:17 +00:00
|
|
|
-r docs/requirements.txt
|
2016-05-09 20:56:06 +00:00
|
|
|
# normal install is not needed for docs, and slows things down
|
|
|
|
skip_install = True
|
2016-03-31 22:59:49 +00:00
|
|
|
commands =
|
2021-04-04 12:44:55 +00:00
|
|
|
sphinx-build -W -b html -d {toxinidir}/docs/_build/doctrees {toxinidir}/docs {toxinidir}/docs/_build/html
|
2017-06-08 01:03:11 +00:00
|
|
|
|
|
|
|
[testenv:pyinstaller]
|
2018-03-29 00:36:12 +00:00
|
|
|
extras =
|
2017-06-08 01:03:11 +00:00
|
|
|
deps =
|
2020-01-20 16:35:14 +00:00
|
|
|
{[testenv]deps}
|
2018-03-29 18:11:15 +00:00
|
|
|
packaging
|
2022-02-14 16:29:19 +00:00
|
|
|
pyinstaller
|
2021-07-05 23:17:26 +00:00
|
|
|
pefile ; platform_system == "Windows"
|
2017-06-08 01:03:11 +00:00
|
|
|
# Setting PYTHONHASHSEED to a known value assists with reproducible builds.
|
|
|
|
# See https://pyinstaller.readthedocs.io/en/stable/advanced-topics.html#creating-a-reproducible-build
|
|
|
|
setenv=PYTHONHASHSEED=1
|
2019-10-07 15:30:10 +00:00
|
|
|
commands=
|
|
|
|
pip freeze
|
|
|
|
pyinstaller -y --clean pyinstaller.spec
|
2018-03-27 21:34:32 +00:00
|
|
|
|
|
|
|
[testenv:tarballs]
|
2021-09-17 10:07:58 +00:00
|
|
|
basepython = python3
|
2018-03-27 21:34:32 +00:00
|
|
|
deps =
|
|
|
|
commands =
|
|
|
|
python setup.py update_version
|
2021-10-20 22:10:23 +00:00
|
|
|
python setup.py sdist --formats=gztar bdist_wheel --universal
|