9f1ef35630
This patch ports the tempurl middleware over to PY3. We use an "all-native" string model, where we convert WSGI strings as soon as we see them. It helps to deal with HMAC. Aaand, we fix formpost along the way. It _clearly_ was doing a wrong thing, encoding the same body several times if we had several keys. On py2 it wasn't noticeable, but on py3 this breaks, because the bytes type cannot be encoded again. Change-Id: I69974cc8a39731c980b54137b799a36b2e63a44a
132 lines
3.9 KiB
INI
132 lines
3.9 KiB
INI
[tox]
|
|
envlist = py37,py27,pep8
|
|
minversion = 2.3.2
|
|
skipsdist = True
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
install_command = pip install -U {opts} {packages}
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
NOSE_WITH_COVERAGE=1
|
|
NOSE_COVER_BRANCHES=1
|
|
deps =
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands = find . ( -type f -o -type l ) -name "*.py[co]" -delete
|
|
find . -type d -name "__pycache__" -delete
|
|
nosetests {posargs:test/unit}
|
|
whitelist_externals = find
|
|
rm
|
|
passenv = SWIFT_* *_proxy
|
|
|
|
[testenv:cover]
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
NOSE_WITH_COVERAGE=1
|
|
NOSE_COVER_BRANCHES=1
|
|
NOSE_COVER_HTML=1
|
|
NOSE_COVER_HTML_DIR={toxinidir}/cover
|
|
|
|
[testenv:pep8]
|
|
basepython = python2.7
|
|
commands =
|
|
flake8 {posargs:swift test doc setup.py}
|
|
flake8 --filename=swift* bin
|
|
python ./setup.py check --restructuredtext --strict
|
|
bandit -c bandit.yaml -r swift -n 5
|
|
./.manpages {posargs}
|
|
|
|
[testenv:py3pep8]
|
|
basepython = python3
|
|
commands = {[testenv:pep8]commands}
|
|
|
|
[testenv:func]
|
|
basepython = python2.7
|
|
commands = ./.functests {posargs}
|
|
|
|
[testenv:func-py3]
|
|
basepython = python3
|
|
commands =
|
|
nosetests {posargs: \
|
|
test/functional/test_symlink.py \
|
|
test/functional/test_tempurl.py \
|
|
test/functional/tests.py}
|
|
|
|
[testenv:func-encryption]
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=encryption
|
|
|
|
[testenv:func-domain-remap-staticweb]
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=domain_remap_staticweb
|
|
|
|
[testenv:func-ec]
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=ec
|
|
|
|
[testenv:func-s3api]
|
|
commands = ./.functests {posargs}
|
|
setenv = SWIFT_TEST_IN_PROCESS=1
|
|
SWIFT_TEST_IN_PROCESS_CONF_LOADER=s3api
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:docs]
|
|
basepython = python3
|
|
deps = -r{toxinidir}/doc/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 developer.openstack.org.
|
|
basepython = python3
|
|
deps = -r{toxinidir}/doc/requirements.txt
|
|
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
|
|
ignore = H101,H202,H301,H306,H404,H405,H501
|
|
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
|
|
|
|
[testenv:releasenotes]
|
|
basepython = python3
|
|
deps = -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
|
|
deps =
|
|
-c{toxinidir}/lower-constraints.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/requirements.txt
|