glance/tox.ini
Cyril Roelandt e9fc06ccf3 Python 3: fix glance.tests.unit
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
2016-01-26 19:05:03 +01:00

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