0518c60235
Using an antiquated distro to keep us on an EOL'ed version of python that *just so happens* to have had support dropped for it around the same time virtualenv removed the ability to create py27 environments doesn't seem like the right way to address the problem. Make sure we also include the tox<4 pin that we're using project-wide so we don't get some nonsense about "Multiple top-level packages discovered in a flat-layout". Related-Change: https://review.opendev.org/c/openstack/swift/+/881035 Change-Id: I32a161e555179ca34d306ac37e4097611853e36b
204 lines
5.7 KiB
INI
204 lines
5.7 KiB
INI
[tox]
|
|
envlist = py37,py27,pep8
|
|
minversion = 3.18.0
|
|
requires =
|
|
# required to support py27/py36 envs
|
|
virtualenv<20.22
|
|
# project-wide requirement; see .zuul.yaml
|
|
tox<4
|
|
|
|
[pytest]
|
|
addopts = --verbose
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
install_command = pip install -U {opts} {packages}
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
deps =
|
|
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
find {envdir} ( -type f -o -type l ) -name "*.py[co]" -delete
|
|
find {envdir} -type d -name "__pycache__" -delete
|
|
bash -ec "pytest --cov=swift --cov-branch --cov-report=html:cover --cov-report term {posargs:test/unit} || pytest --last-failed {posargs:test/unit}"
|
|
allowlist_externals =
|
|
bash
|
|
find
|
|
passenv = SWIFT_*
|
|
|
|
[testenv:s3api]
|
|
usedevelop = False
|
|
deps = {[testenv:py36]deps}
|
|
commands =
|
|
pytest {posargs:test/s3api}
|
|
passenv = SWIFT_*
|
|
# For some reason we hit some EPERM issue when building the package for these tests?
|
|
# (CentOS 8, CPython 3.6, tox 3.28.0)
|
|
skipsdist = True
|
|
skip_install = True
|
|
|
|
[testenv:py27]
|
|
deps =
|
|
-c{toxinidir}/py2-constraints.txt
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
|
|
[testenv:py36]
|
|
deps =
|
|
-c{toxinidir}/py36-constraints.txt
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
|
|
[testenv:py37]
|
|
deps = {[testenv:py36]deps}
|
|
|
|
[testenv:cover]
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
|
|
[testenv:pep8]
|
|
allowlist_externals =
|
|
./.manpages
|
|
commands =
|
|
flake8 {posargs:swift test doc setup.py}
|
|
flake8 --filename=bin/swift* bin
|
|
python ./setup.py check --restructuredtext --strict
|
|
bandit -c bandit.yaml -r swift -n 5
|
|
./.manpages {posargs}
|
|
|
|
[testenv:func-py3]
|
|
basepython = python3
|
|
deps = {[testenv:py36]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
|
|
[testenv:func-ec-py3]
|
|
basepython = python3
|
|
deps = {[testenv:py36]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=ec
|
|
|
|
[testenv:func-encryption-py3]
|
|
basepython = python3
|
|
deps = {[testenv:py36]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=encryption
|
|
|
|
[testenv:func]
|
|
basepython = python2.7
|
|
deps = {[testenv:py27]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
|
|
[testenv:func-encryption]
|
|
basepython = python2.7
|
|
deps = {[testenv:py27]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=encryption
|
|
|
|
[testenv:func-ec]
|
|
basepython = python2.7
|
|
deps = {[testenv:py27]deps}
|
|
allowlist_externals =
|
|
./.functests
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=ec
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:docs]
|
|
basepython = python3
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/doc/requirements.txt
|
|
-r{toxinidir}/requirements.txt
|
|
commands = sphinx-build -W -b html doc/source doc/build/html
|
|
|
|
[testenv:api-ref]
|
|
# This environment is called from CI scripts to test and publish
|
|
# the API Ref to docs.openstack.org.
|
|
basepython = python3
|
|
deps = -r{toxinidir}/doc/requirements.txt
|
|
allowlist_externals =
|
|
rm
|
|
commands =
|
|
rm -rf api-ref/build
|
|
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
|
|
|
|
[testenv:bandit]
|
|
deps = -r{toxinidir}/test-requirements.txt
|
|
commands = bandit -c bandit.yaml -r swift -n 5
|
|
|
|
[flake8]
|
|
# it's not a bug that we aren't using all of hacking, ignore:
|
|
# H101: Use TODO(NAME)
|
|
# H202: assertRaises Exception too broad
|
|
# H301: one import per line
|
|
# H306: imports not in alphabetical order (time, os)
|
|
# H404: multi line docstring should start without a leading new line
|
|
# H405: multi line docstring summary not separated with an empty line
|
|
# H501: Do not use self.__dict__ for string formatting
|
|
# Disabled with going to hacking 2.0, needs further investigation and
|
|
# changes to enable:
|
|
# E402: module level import not at top of file
|
|
# E731 do not assign a lambda expression, use a def
|
|
# E741 ambiguous variable name
|
|
# Swift team needs to decide if they want to enable either of these:
|
|
# W503: line break before binary operator
|
|
# W504: line break after binary operator
|
|
ignore = H101,H202,H301,H306,H404,H405,H501,W503,W504,E402,E731,E741
|
|
exclude = .venv,.tox,dist,*egg
|
|
filename = *.py,bin/*
|
|
show-source = True
|
|
|
|
[testenv:bindep]
|
|
# Do not install any requirements. We want this to be fast and work even if
|
|
# system dependencies are missing, since it's used to tell you what system
|
|
# dependencies are missing! This also means that bindep must be installed
|
|
# separately, outside of the requirements files.
|
|
skip_install = True
|
|
deps = bindep
|
|
commands = bindep test doc
|
|
|
|
[testenv:releasenotes]
|
|
basepython = python3
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands = sphinx-build -a -W -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
|
|
[testenv:lower-constraints]
|
|
# FIXME(dhellmann): We'll want to uncomment this
|
|
# when the full test suite works with python 3.
|
|
# basepython = python3
|
|
basepython = python2.7
|
|
deps =
|
|
-c{toxinidir}/lower-constraints.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/requirements.txt
|
|
# Drop the --upgrade flag so we don't accidentally drag anything forward when
|
|
# we install swift
|
|
install_command = pip install {opts} {packages}
|
|
|
|
[testenv:pdf-docs]
|
|
basepython = python3
|
|
deps = {[testenv:docs]deps}
|
|
allowlist_externals =
|
|
make
|
|
commands =
|
|
sphinx-build -W -b latex doc/source doc/build/pdf
|
|
make -C doc/build/pdf
|