[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 = python -m testtools.run \ glance.tests.unit.api.middleware.test_cache_manage \ glance.tests.unit.api.test_cmd \ glance.tests.unit.api.test_cmd_cache_manage \ glance.tests.unit.api.test_common \ glance.tests.unit.api.test_property_protections \ glance.tests.unit.async.flows.test_convert \ glance.tests.unit.async.flows.test_import \ glance.tests.unit.async.flows.test_introspect \ glance.tests.unit.async.test_async \ glance.tests.unit.async.test_taskflow_executor \ glance.tests.unit.common.scripts.image_import.test_main \ glance.tests.unit.common.scripts.test_scripts_utils \ glance.tests.unit.common.test_client \ glance.tests.unit.common.test_config \ glance.tests.unit.common.test_exception \ glance.tests.unit.common.test_location_strategy \ glance.tests.unit.common.test_property_utils \ glance.tests.unit.common.test_rpc \ glance.tests.unit.common.test_scripts \ glance.tests.unit.common.test_semver \ glance.tests.unit.common.test_signature_utils \ glance.tests.unit.common.test_swift_store_utils \ glance.tests.unit.common.test_utils \ glance.tests.unit.common.test_wsgi \ glance.tests.unit.common.test_wsgi_ipv6 \ glance.tests.unit.test_artifact_type_definition_framework \ glance.tests.unit.test_artifacts_plugin_loader \ glance.tests.unit.test_auth \ glance.tests.unit.test_cache_middleware \ glance.tests.unit.test_cached_images \ glance.tests.unit.test_context \ glance.tests.unit.test_context_middleware \ glance.tests.unit.test_db \ glance.tests.unit.test_db_metadef \ glance.tests.unit.test_domain \ glance.tests.unit.test_domain_proxy \ glance.tests.unit.test_glance_replicator \ glance.tests.unit.test_image_cache \ glance.tests.unit.test_image_cache_client \ glance.tests.unit.test_jsonpatchmixin \ glance.tests.unit.test_manage \ glance.tests.unit.test_migrations \ glance.tests.unit.test_misc \ glance.tests.unit.test_notifier \ glance.tests.unit.test_policy \ glance.tests.unit.test_quota \ glance.tests.unit.test_schema \ glance.tests.unit.test_scrubber \ glance.tests.unit.test_store_artifact \ glance.tests.unit.test_store_image \ glance.tests.unit.test_store_location \ glance.tests.unit.test_versions \ glance.tests.unit.v1.test_registry_api \ glance.tests.unit.v1.test_registry_client \ glance.tests.unit.v1.test_upload_utils \ glance.tests.unit.v2.test_image_actions_resource \ glance.tests.unit.v2.test_image_data_resource \ glance.tests.unit.v2.test_image_members_resource \ glance.tests.unit.v2.test_image_tags_resource \ glance.tests.unit.v2.test_images_resource \ glance.tests.unit.v2.test_metadef_resources \ glance.tests.unit.v2.test_registry_api \ glance.tests.unit.v2.test_registry_client \ glance.tests.unit.v2.test_schemas_resource \ glance.tests.unit.v2.test_tasks_resource [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