|  | [tox] | 
|  | minversion = 3.18.0 | 
|  | envlist = pep8 | 
|  | skipsdist = True | 
|  | ignore_basepython_conflict = True | 
|  |  | 
|  | [testenv] | 
|  | basepython = python3 | 
|  | usedevelop = True | 
|  | install_command = pip install {opts} {packages} | 
|  | deps = | 
|  | -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} | 
|  | -r{toxinidir}/requirements.txt | 
|  | -r{toxinidir}/test-requirements.txt | 
|  | setenv = | 
|  | VIRTUAL_ENV={envdir} | 
|  | PYTHONDONTWRITEBYTECODE=1 | 
|  | allowlist_externals = sh | 
|  | find | 
|  | rm | 
|  | commands = | 
|  | find . -type f -name "*.pyc" -delete | 
|  | stestr run {posargs} | 
|  | passenv = http_proxy | 
|  | HTTP_PROXY | 
|  | https_proxy | 
|  | HTTPS_PROXY | 
|  | no_proxy | 
|  | NO_PROXY | 
|  | OS_DEBUG | 
|  | OS_LOG_CAPTURE | 
|  | OS_STDERR_CAPTURE | 
|  | OS_STDOUT_CAPTURE | 
|  |  | 
|  | [testenv:pep8] | 
|  | commands = sh tools/pretty_flake8.sh | 
|  |  | 
|  | [testenv:docs] | 
|  | deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} | 
|  | -r{toxinidir}/doc/requirements.txt | 
|  | commands = rm -rf doc/build | 
|  | sphinx-build -E -W -b html doc/source doc/build/html | 
|  |  | 
|  | [testenv:releasenotes] | 
|  | deps = {[testenv:docs]deps} | 
|  | allowlist_externals = rm | 
|  | commands = | 
|  | rm -rf releasenotes/build | 
|  | sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html | 
|  |  | 
|  | [testenv:bashate] | 
|  | deps = bashate | 
|  | allowlist_externals = bash | 
|  | commands = bash -c "find {toxinidir}/devstack         \ | 
|  | -not \( -type d -name .?\* -prune \)         \ | 
|  | -not \( -type d -name doc -prune \)          \ | 
|  | -type f                                      \ | 
|  | -not -name \*~                               \ | 
|  | -not -name \*.md                             \ | 
|  | \(                                           \ | 
|  | -name \*.sh -or                             \ | 
|  | -name \*rc -or                              \ | 
|  | -name functions\* -or                       \ | 
|  | -wholename \*/lib/\*                        \ | 
|  | \)                                           \ | 
|  | -print0 | xargs -0 bashate -v" | 
|  |  | 
|  | [testenv:pip-check-reqs] | 
|  | # do not install test-requirements as that will pollute the virtualenv for | 
|  | # determining missing packages | 
|  | # this also means that pip-missing-reqs must be installed separately, outside | 
|  | # of the requirements.txt files | 
|  | deps = pip-check-reqs | 
|  | -r{toxinidir}/requirements.txt | 
|  | commands=pip-missing-reqs -d --ignore-file=designate/tests/* designate | 
|  |  | 
|  | [testenv:venv] | 
|  | commands = {posargs} | 
|  |  | 
|  | [flake8] | 
|  | # ignored flake8 codes: | 
|  | # H302 import only modules | 
|  | # H306 imports not in alphabetical order | 
|  | # H402 one line docstring needs punctuation | 
|  | # H404 multi line docstring should start with a summary | 
|  | # H405 multi line docstring summary not separated with an empty line | 
|  | # H904 Wrap long lines in parentheses instead of a backslash | 
|  | # E126 continuation line over-indented for hanging indent | 
|  | # E128 continuation line under-indented for visual indent | 
|  | # W504 line break after binary operator | 
|  | ignore = H302,H306,H402,H404,H405,H904,E126,E128,W504 | 
|  | exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*openstack/deprecated*,*lib/python*,*egg,build,tools,.ropeproject | 
|  |  | 
|  | [flake8:local-plugins] | 
|  | extension = | 
|  | T102 = tempest.hacking.checks:import_no_clients_in_api_and_scenario_tests | 
|  | T104 = tempest.hacking.checks:scenario_tests_need_service_tags | 
|  | T105 = tempest.hacking.checks:no_setup_teardown_class_for_tests | 
|  | T107 = tempest.hacking.checks:service_tags_not_in_module_path | 
|  | T108 = tempest.hacking.checks:no_hyphen_at_end_of_rand_name | 
|  | N322 = tempest.hacking.checks:no_mutable_default_args | 
|  | T109 = tempest.hacking.checks:no_testtools_skip_decorator | 
|  | T110 = tempest.hacking.checks:get_resources_on_service_clients | 
|  | T111 = tempest.hacking.checks:delete_resources_on_service_clients | 
|  | T112 = tempest.hacking.checks:dont_import_local_tempest_into_lib | 
|  | T113 = tempest.hacking.checks:dont_use_config_in_tempest_lib | 
|  | T114 = tempest.hacking.checks:use_rand_uuid_instead_of_uuid4 | 
|  | D701 = checks:mutable_default_arguments | 
|  | D703 = checks:check_explicit_underscore_import | 
|  | D704 = checks:no_import_graduated_oslo_libraries | 
|  | D705 = checks:use_timeutils_utcnow | 
|  | D706 = checks:no_translate_debug_logs | 
|  | D707 = checks:check_no_basestring | 
|  | D708 = checks:check_python3_xrange | 
|  | D709 = checks:check_no_log_audit | 
|  | D710 = checks:check_no_log_warn | 
|  | D711 = checks:check_line_continuation_no_backslash | 
|  | paths = ./designate_tempest_plugin/hacking | 
|  |  |