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]
|
|
|
|
envlist = py27
|
2018-03-29 00:36:12 +00:00
|
|
|
minversion = 2.4
|
tox: add 'skipsdist=True', hoping this will fix buildbot
There appears to be a bug in setuptools, triggered by running "python
setup.py sdist" with setuptools==11.3 in that python's environment, on a
project whose setup.py has a setup_requires= that requests setuptools >=
28.8.0. When setuptools is upgraded from inside setup.py, it gets into a
weird hybrid state where it's using setup() keyword-argument plugins from the
newer setuptools, but those plugins reference functions that aren't present
in the older setuptools, and the sdist command fails with an import
error (module object has no attribute 'check_specifier').
We don't actually need the sdist: all our tox test environments use
"skip_install = true", because we install tahoe via the "deps" line (so we
can get the `[test]` extra, and get a faster symlink-ish "editable" install).
That install uses "pip", which uses the pip inside the new virtualenv, which
either uses a newer version of setuptools (dependent upon what version of
"virtualenv" was installed in the parent environment, next to tox) or somehow
allows setuptools to be upgraded without exposing this weird broken hybrid
state.
Either way, skipping the sdist seems to fix this problem.
refs ticket:2910
https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2910
2018-03-27 18:56:43 +00:00
|
|
|
skipsdist = True
|
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 =
|
|
|
|
certifi
|
2018-07-06 21:26:11 +00:00
|
|
|
subunitreporter
|
2018-03-29 00:36:12 +00:00
|
|
|
# We add usedevelop=True for speed, and extras=test to get things like "mock"
|
|
|
|
# that are required for our unit tests.
|
|
|
|
usedevelop = True
|
2018-08-06 15:40:44 +00:00
|
|
|
extras = test
|
2016-03-09 05:16:36 +00:00
|
|
|
commands =
|
2016-03-18 05:01:33 +00:00
|
|
|
tahoe --version
|
2018-06-15 17:24:01 +00:00
|
|
|
trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors} {posargs:allmydata}
|
2016-03-09 05:16:36 +00:00
|
|
|
|
2016-08-22 23:36:56 +00:00
|
|
|
[testenv:integration]
|
|
|
|
commands =
|
2016-09-15 17:43:46 +00:00
|
|
|
# NOTE: 'run with "py.test --keep-tempdir -s -v integration/" to debug failures'
|
2016-08-22 23:36:56 +00:00
|
|
|
py.test -v integration/
|
|
|
|
|
2016-05-09 20:59:54 +00:00
|
|
|
[testenv:coverage]
|
|
|
|
# coverage (with --branch) takes about 65% longer to run
|
|
|
|
commands =
|
|
|
|
tahoe --version
|
2018-06-15 17:24:01 +00:00
|
|
|
coverage run --branch -m twisted.trial {env:TAHOE_LAFS_TRIAL_ARGS:--rterrors --reporter=timing} {posargs:allmydata}
|
2016-09-29 05:24:10 +00:00
|
|
|
coverage xml
|
2016-05-09 20:59:54 +00:00
|
|
|
|
2016-04-06 23:57:41 +00:00
|
|
|
[testenv:codechecks]
|
|
|
|
commands =
|
|
|
|
pyflakes src static misc setup.py
|
|
|
|
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
|
|
|
|
|
|
|
# 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
|
|
|
|
mv towncrier.pyproject.toml pyproject.toml
|
|
|
|
|
2018-08-06 14:32:16 +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.
|
2018-08-06 16:04:58 +00:00
|
|
|
python -m towncrier.check
|
2016-04-06 23:57:41 +00:00
|
|
|
|
2018-08-27 23:44:17 +00:00
|
|
|
[testenv:draftnews]
|
|
|
|
passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH
|
|
|
|
# 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.
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
|
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 =
|
2018-06-15 17:24:01 +00:00
|
|
|
python misc/build_helpers/run-deprecations.py --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/twisted/twisted
|
|
|
|
git+https://github.com/warner/foolscap
|
|
|
|
commands =
|
2016-04-06 23:34:14 +00:00
|
|
|
flogtool --version
|
2018-06-15 17:24:01 +00:00
|
|
|
python misc/build_helpers/run-deprecations.py --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 =
|
2018-03-29 18:11:15 +00:00
|
|
|
packaging
|
2017-06-08 01:03:11 +00:00
|
|
|
pyinstaller
|
|
|
|
# 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
|
|
|
|
commands=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
|