[tox] minversion = 2.5.0 skipsdist = True envlist = py37,py36,py27,pep8,api-ref,docs,genconfig,genpolicy,releasenotes [testenv] usedevelop = True install_command = pip install {opts} {packages} setenv = VIRTUAL_ENV={envdir} deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt .[ldap,memcache,mongodb] commands = find keystone -type f -name "*.pyc" -delete stestr run {posargs} whitelist_externals = bash find passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY PBR_VERSION [testenv:api-ref] basepython = python3 deps = -r{toxinidir}/doc/requirements.txt commands = bash -c "rm -rf api-ref/build" sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html [testenv:pep8] basepython = python3 deps = .[bandit] {[testenv]deps} commands = flake8 --ignore=D100,D101,D102,D103,D104,E305,E402,E501,W503,W504,W605,E731 # Run bash8 during pep8 runs to ensure violations are caught by # the check and gate queues bashate devstack/plugin.sh # Run security linter bandit -r keystone -x tests [testenv:bandit] basepython = python3 # NOTE(browne): This is required for the integration test job of the bandit # project. Please do not remove. deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -r{toxinidir}/requirements.txt .[bandit] commands = bandit -r keystone -x tests [testenv:cover] basepython = python3 # Also do not run test_coverage_ext tests while gathering coverage as those # tests conflict with coverage. setenv = {[testenv]setenv} PYTHON=coverage run --source keystone --parallel-mode commands = find keystone -type f -name "*.pyc" -delete stestr run {posargs} coverage combine coverage html -d cover coverage xml -o cover/coverage.xml [testenv:patch_cover] basepython = python3 commands = bash tools/cover.sh [testenv:venv] basepython = python3 commands = {posargs} [testenv:debug] basepython = python3 commands = find keystone -type f -name "*.pyc" -delete oslo_debug_helper {posargs} passenv = KSTEST_ADMIN_URL KSTEST_ADMIN_USERNAME KSTEST_ADMIN_PASSWORD KSTEST_ADMIN_DOMAIN_ID KSTEST_PUBLIC_URL KSTEST_USER_USERNAME KSTEST_USER_PASSWORD KSTEST_USER_DOMAIN_ID KSTEST_PROJECT_ID [testenv:functional] basepython = python3 deps = -r{toxinidir}/test-requirements.txt setenv = OS_TEST_PATH=./keystone/tests/functional commands = find keystone -type f -name "*.pyc" -delete stestr run {posargs} stestr slowest passenv = KSTEST_ADMIN_URL KSTEST_ADMIN_USERNAME KSTEST_ADMIN_PASSWORD KSTEST_ADMIN_DOMAIN_ID KSTEST_PUBLIC_URL KSTEST_USER_USERNAME KSTEST_USER_PASSWORD KSTEST_USER_DOMAIN_ID KSTEST_PROJECT_ID [flake8] filename= *.py,keystone-manage show-source = true enable-extensions = H203,H904 # D100: Missing docstring in public module # D101: Missing docstring in public class # D102: Missing docstring in public method # D103: Missing docstring in public function # D104: Missing docstring in public package # D203: 1 blank line required before class docstring (deprecated in pep257) # TODO(wxy): Fix the pep8 issue. # E402: module level import not at top of file # W503: line break before binary operator # E731: do not assign a lambda expression, use a def ignore = D100,D101,D102,D103,D104,D203,E402,W503,E731 exclude=.venv,.git,.tox,build,dist,*lib/python*,*egg,tools,vendor,.update-venv,*.ini,*.po,*.pot max-complexity=24 [testenv:docs] basepython = python3 deps = -r{toxinidir}/doc/requirements.txt .[ldap,memcache,mongodb] commands= bash -c "rm -rf doc/build" bash -c "rm -rf doc/source/api" sphinx-build -W -b html doc/source doc/build/html [testenv:releasenotes] basepython = python3 deps = -r{toxinidir}/doc/requirements.txt commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html [testenv:genconfig] basepython = python3 commands = oslo-config-generator --config-file=config-generator/keystone.conf [testenv:genpolicy] basepython = python3 commands = oslopolicy-sample-generator --config-file config-generator/keystone-policy-generator.conf [hacking] import_exceptions = keystone.i18n six.moves local-check-factory = keystone.tests.hacking.checks.factory [testenv:bindep] basepython = python3 # 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. deps = bindep commands = bindep test [testenv:lower-constraints] basepython = python3 deps = -c{toxinidir}/lower-constraints.txt -r{toxinidir}/test-requirements.txt .[ldap,memcache,mongodb]