e9fc06ccf3
With this change, all Glance unit tests now pass on Python3! * Replace dict.keys() with list(dict.keys()) to get a list on Python 3. On Python 3, dict.keys() now returns a view, not a list * Replace filter() with a list-comprehension with if, to get a list on Python 3. * Don't encode HTTP headers to UTF-8 on Python 3. Python 3 already encodes them for us. * On Python 3, decode the request identifier of the context to get a Unicode string. * Replace jsonutils.dumps(obj) with jsonutils.dump_as_bytes() to create a HTTP body, since the HTTP body must be a bytes string. * start_http_server(): use bytes for image data, not Unicode. * Use byte strings to check HTTP body, not Unicode. Or on some unit tests, decode the HTTP body to get Unicode. * Skip test on invalid unicode image property on Python 3. It's now supported on Python 3. * tox.ini: remove the whitelist of tests run on Python 3, since the whole test suite now pass on Python 3! Note: With the gate, the Python 3 gate became unstable: bug #1521756. The bug was caused by eventlet and the eventlet bug has been fixed in eventlet 0.18, released a few days ago. Co-authored-by: Victor Stinner <vstinner@redhat.com> Change-Id: I99e0a80df93d0304c33ce50859c92e62ccc71648
89 lines
3.1 KiB
INI
89 lines
3.1 KiB
INI
[tox]
|
|
minversion = 1.6
|
|
envlist = py34,py33,py27,pep8
|
|
skipsdist = True
|
|
|
|
[testenv]
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
usedevelop = True
|
|
install_command =
|
|
constraints: {[testenv:common-constraints]install_command}
|
|
pip install -U {opts} {packages}
|
|
deps = -r{toxinidir}/test-requirements.txt
|
|
commands = lockutils-wrapper python setup.py testr --slowest --testr-args='{posargs}'
|
|
whitelist_externals = bash
|
|
passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
|
|
|
|
[testenv:common-constraints]
|
|
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
|
|
|
[testenv:releasenotes]
|
|
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
|
|
[testenv:py34]
|
|
commands = lockutils-wrapper python setup.py testr --slowest --testr-args='glance.tests.unit'
|
|
|
|
[testenv:py34-constraints]
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
commands = {[testenv:py34]commands}
|
|
|
|
[testenv:pep8]
|
|
commands =
|
|
flake8 {posargs}
|
|
# Check that .po and .pot files are valid:
|
|
bash -c "find glance -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
|
|
|
|
[testenv:pep8-constraints]
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
commands =
|
|
flake8 {posargs}
|
|
# Check that .po and .pot files are valid:
|
|
bash -c "find glance -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
|
|
|
|
[testenv:cover]
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
commands = python setup.py testr --coverage --testr-args='^(?!.*test.*coverage).*$'
|
|
|
|
[testenv:cover-constraints]
|
|
setenv = {[testenv:cover]setenv}
|
|
commands = {[testenv:cover]commands}
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:venv-constraints]
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
commands = {posargs}
|
|
|
|
[testenv:genconfig]
|
|
commands =
|
|
oslo-config-generator --config-file etc/oslo-config-generator/glance-api.conf
|
|
oslo-config-generator --config-file etc/oslo-config-generator/glance-registry.conf
|
|
oslo-config-generator --config-file etc/oslo-config-generator/glance-scrubber.conf
|
|
oslo-config-generator --config-file etc/oslo-config-generator/glance-cache.conf
|
|
oslo-config-generator --config-file etc/oslo-config-generator/glance-manage.conf
|
|
|
|
[testenv:docs]
|
|
commands = python setup.py build_sphinx
|
|
|
|
[testenv:docs-constraints]
|
|
install_command = {[testenv:common-constraints]install_command}
|
|
commands = python setup.py build_sphinx
|
|
|
|
[testenv:bandit]
|
|
deps = .[bandit]
|
|
commands = bandit -c bandit.yaml -r glance -n5 -p gate
|
|
|
|
[flake8]
|
|
# TODO(dmllr): Analyze or fix the warnings blacklisted below
|
|
# E711 comparison to None should be 'if cond is not None:'
|
|
# E712 comparison to True should be 'if cond is True:' or 'if cond:'
|
|
# H404 multi line docstring should start with a summary
|
|
# H405 multi line docstring summary not separated with an empty line
|
|
ignore = E711,E712,H404,H405
|
|
exclude = .venv,.git,.tox,dist,doc,etc,*glance/locale*,*lib/python*,*egg,build
|
|
|
|
[hacking]
|
|
local-check-factory = glance.hacking.checks.factory
|
|
import_exceptions = glance.i18n
|