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.
|
|
|
|
|
2018-01-17 21:21:30 +00:00
|
|
|
[pytest]
|
|
|
|
twisted = 1
|
|
|
|
|
2016-03-09 05:16:36 +00:00
|
|
|
[tox]
|
2020-06-26 11:32:53 +00:00
|
|
|
envlist = {py27,pypy27,py36}{-coverage,}
|
2018-03-29 00:36:12 +00:00
|
|
|
minversion = 2.4
|
2016-03-09 05:16:36 +00:00
|
|
|
|
|
|
|
[testenv]
|
2018-07-09 17:32:59 +00:00
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH
|
2018-07-05 00:14:29 +00:00
|
|
|
# Get "certifi" 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.
|
2018-07-05 18:19:23 +00:00
|
|
|
deps =
|
2019-05-14 07:36:34 +00:00
|
|
|
# Pin all of these versions for the same reason you ever want to pin
|
|
|
|
# anything: to prevent new releases with regressions from introducing
|
|
|
|
# spurious failures into CI runs for whatever development work is
|
|
|
|
# happening at the time. The versions selected here are just the current
|
|
|
|
# versions at the time. Bumping them to keep up with future releases is
|
|
|
|
# fine as long as those releases are known to actually work.
|
2019-05-13 15:32:02 +00:00
|
|
|
pip==19.1.1
|
|
|
|
setuptools==41.0.1
|
|
|
|
wheel==0.33.4
|
|
|
|
subunitreporter==19.3.2
|
2019-05-14 07:36:34 +00:00
|
|
|
# As an exception, we don't pin certifi 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.
|
2018-07-05 18:19:23 +00:00
|
|
|
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
|
|
|
|
# We use extras=test to get things like "mock" that are required for our unit
|
|
|
|
# tests.
|
2018-08-06 15:40:44 +00:00
|
|
|
extras = 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.
|
|
|
|
!py36: TEST_SUITE = allmydata
|
|
|
|
py36: TEST_SUITE = allmydata.test.python3_tests
|
|
|
|
|
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-27 14:40:27 +00:00
|
|
|
# The tahoe script isn't sufficiently ported for this to succeed on
|
|
|
|
# Python 3.x yet.
|
2020-08-26 18:36:09 +00:00
|
|
|
!py36: tahoe --version
|
|
|
|
|
|
|
|
!coverage: trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors} {posargs:{env:TEST_SUITE}}
|
|
|
|
|
2020-08-27 14:40:27 +00:00
|
|
|
# measuring coverage is somewhat slower than not measuring coverage
|
|
|
|
# so only do it on request.
|
|
|
|
coverage: coverage run -m twisted.trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors --reporter=timing} {posargs:{env:TEST_SUITE}}
|
|
|
|
coverage: coverage combine
|
2020-08-26 18:36:09 +00:00
|
|
|
coverage: coverage xml
|
|
|
|
|
2020-07-03 21:35:48 +00:00
|
|
|
|
2016-08-22 23:36:56 +00:00
|
|
|
[testenv:integration]
|
2019-07-23 16:39:45 +00:00
|
|
|
setenv =
|
|
|
|
COVERAGE_PROCESS_START=.coveragerc
|
2016-08-22 23:36:56 +00:00
|
|
|
commands =
|
2020-08-27 14:40:27 +00:00
|
|
|
# NOTE: 'run with "py.test --keep-tempdir -s -v integration/" to debug failures'
|
|
|
|
py.test --coverage -v {posargs:integration}
|
2019-07-23 16:39:45 +00:00
|
|
|
coverage combine
|
|
|
|
coverage report
|
2016-08-22 23:36:56 +00:00
|
|
|
|
2016-05-09 20:59:54 +00:00
|
|
|
|
2016-04-06 23:57:41 +00:00
|
|
|
[testenv:codechecks]
|
2020-07-31 11:41:33 +00:00
|
|
|
# On macOS, git inside of towncrier needs $HOME.
|
|
|
|
passenv = HOME
|
2019-05-12 18:40:55 +00:00
|
|
|
whitelist_externals =
|
|
|
|
/bin/mv
|
2016-04-06 23:57:41 +00:00
|
|
|
commands =
|
2020-07-06 17:50:06 +00:00
|
|
|
flake8 src static misc setup.py
|
2016-04-06 23:57:41 +00:00
|
|
|
python misc/coding_tools/check-umids.py src
|
|
|
|
python misc/coding_tools/check-debugging.py
|
|
|
|
python misc/coding_tools/find-trailing-spaces.py -r src static misc setup.py
|
|
|
|
python misc/coding_tools/check-miscaptures.py
|
2018-08-06 16:04:58 +00:00
|
|
|
|
2020-08-27 14:40:27 +00:00
|
|
|
# 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
|
|
|
|
# file. See pyproject.toml for legal <change type> values.
|
|
|
|
python -m towncrier.check --pyproject towncrier.pyproject.toml
|
2018-08-27 21:25:48 +00:00
|
|
|
|
2018-08-27 23:44:17 +00:00
|
|
|
[testenv:draftnews]
|
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH
|
2019-04-09 21:35:45 +00:00
|
|
|
# see comment in [testenv] about "certifi"
|
2018-08-27 23:44:17 +00:00
|
|
|
whitelist_externals = mv
|
|
|
|
deps =
|
|
|
|
certifi
|
2019-04-09 21:33:55 +00:00
|
|
|
towncrier >= 19.2
|
2018-08-27 23:44:17 +00:00
|
|
|
commands =
|
|
|
|
# With pip >= 10 the existence of pyproject.toml (which we are
|
|
|
|
# required to have to configure towncrier) triggers a "build
|
|
|
|
# isolation" mode which prevents anything from working. Avoid
|
|
|
|
# triggering that pip behavior by keeping the towncrier configuration
|
|
|
|
# somewhere else and only bringing it in when it's actually needed
|
|
|
|
# (after pip is done).
|
|
|
|
#
|
|
|
|
# Some discussion is available at
|
|
|
|
# https://github.com/pypa/pip/issues/5696
|
2020-08-27 14:40:27 +00:00
|
|
|
#
|
|
|
|
# towncrier post 19.2 (unreleased as of this writing) adds a --config
|
|
|
|
# option that can be used instead of this file shuffling.
|
2018-08-27 23:44:17 +00:00
|
|
|
mv towncrier.pyproject.toml pyproject.toml
|
|
|
|
|
2019-04-09 21:33:55 +00:00
|
|
|
# towncrier 19.2 + works with python2.7
|
|
|
|
python -m towncrier --draft
|
2018-08-27 23:44:17 +00:00
|
|
|
|
|
|
|
# put it back
|
|
|
|
mv pyproject.toml towncrier.pyproject.toml
|
|
|
|
|
2020-03-11 16:52:26 +00:00
|
|
|
[testenv:news]
|
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH
|
|
|
|
# see comment in [testenv] about "certifi"
|
|
|
|
whitelist_externals = mv
|
|
|
|
deps =
|
|
|
|
certifi
|
|
|
|
towncrier >= 19.2
|
|
|
|
commands =
|
|
|
|
# With pip >= 10 the existence of pyproject.toml (which we are
|
|
|
|
# required to have to configure towncrier) triggers a "build
|
|
|
|
# isolation" mode which prevents anything from working. Avoid
|
|
|
|
# triggering that pip behavior by keeping the towncrier configuration
|
|
|
|
# somewhere else and only bringing it in when it's actually needed
|
|
|
|
# (after pip is done).
|
|
|
|
#
|
|
|
|
# Some discussion is available at
|
|
|
|
# https://github.com/pypa/pip/issues/5696
|
2020-08-27 14:40:27 +00:00
|
|
|
#
|
|
|
|
# towncrier post 19.2 (unreleased as of this writing) adds a --config
|
|
|
|
# option that can be used instead of this file shuffling.
|
2020-03-11 16:52:26 +00:00
|
|
|
mv towncrier.pyproject.toml pyproject.toml
|
|
|
|
|
|
|
|
# towncrier 19.2 + works with python2.7
|
|
|
|
python -m towncrier --yes
|
|
|
|
|
|
|
|
# put it back
|
|
|
|
mv pyproject.toml towncrier.pyproject.toml
|
|
|
|
|
|
|
|
# commit the changes
|
|
|
|
git commit -m "update NEWS.txt for release"
|
|
|
|
|
2016-03-09 05:16:36 +00:00
|
|
|
[testenv:deprecations]
|
|
|
|
setenv =
|
2016-03-27 21:59:20 +00:00
|
|
|
PYTHONWARNINGS=default::DeprecationWarning
|
2016-03-09 05:16:36 +00:00
|
|
|
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]
|
|
|
|
setenv =
|
|
|
|
PYTHONWARNINGS=default::DeprecationWarning
|
|
|
|
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-09 05:17:51 +00:00
|
|
|
[testenv:checkmemory]
|
|
|
|
commands =
|
|
|
|
rm -rf _test_memory
|
|
|
|
python src/allmydata/test/check_memory.py upload
|
|
|
|
python src/allmydata/test/check_memory.py upload-self
|
|
|
|
python src/allmydata/test/check_memory.py upload-POST
|
|
|
|
python src/allmydata/test/check_memory.py download
|
|
|
|
python src/allmydata/test/check_memory.py download-GET
|
|
|
|
python src/allmydata/test/check_memory.py download-GET-slow
|
|
|
|
python src/allmydata/test/check_memory.py receive
|
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
|
|
|
# we pin docutils because of https://sourceforge.net/p/docutils/bugs/301/
|
|
|
|
# which asserts when it reads links to .svg files (e.g. about.rst)
|
|
|
|
deps =
|
|
|
|
sphinx
|
|
|
|
docutils==0.12
|
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 =
|
|
|
|
sphinx-build -b html -d {toxinidir}/docs/_build/doctrees {toxinidir}/docs {toxinidir}/docs/_build/html
|
2017-06-08 01:03:11 +00:00
|
|
|
|
|
|
|
[testenv:pyinstaller]
|
2019-01-25 15:46:23 +00:00
|
|
|
# We override this to pass --no-use-pep517 because pyinstaller (3.4, at least)
|
|
|
|
# is broken when this feature is enabled.
|
|
|
|
install_command = python -m pip install --no-use-pep517 {opts} {packages}
|
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
|
2020-08-10 13:59:36 +00:00
|
|
|
# PyInstaller 4.0 drops Python 2 support. When we finish porting to
|
|
|
|
# Python 3 we can reconsider this constraint.
|
|
|
|
pyinstaller < 4.0
|
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]
|
|
|
|
deps =
|
|
|
|
commands =
|
|
|
|
python setup.py update_version
|
|
|
|
python setup.py sdist --formats=bztar,gztar,zip bdist_wheel
|