[tox] minversion = 2.3.1 skipsdist = True envlist = py34,py27,pep8,api-ref,docs,genconfig,releasenotes [testenv] usedevelop = True install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} setenv = VIRTUAL_ENV={envdir} deps = -r{toxinidir}/test-requirements.txt .[ldap,memcache,mongodb] commands = find keystone -type f -name "*.pyc" -delete bash tools/pretty_tox.sh '{posargs}' whitelist_externals = bash find passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY PBR_VERSION [testenv:api-ref] # This environment is called from CI scripts to test and publish # the API Ref to developer.openstack.org. # NOTE(sdague): this target does not use constraints because # upstream infra does not yet support it. Once that's fixed, we can # drop the install_command. # # we do not used -W here because we are doing some slightly tricky # things to build a single page document, and as such, we are ok # ignoring the duplicate stanzas warning. install_command = pip install -U --force-reinstall {opts} {packages} commands = rm -rf api-ref/build sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html [testenv:legacy_drivers] deps = -r{toxinidir}/test-requirements.txt nose .[ldap,memcache,mongodb] commands = # Run each legacy test separately, to avoid SQL model redefinitions find keystone -type f -name "*.pyc" -delete nosetests -v \ keystone/tests/unit/backend/legacy_drivers/assignment/V8/sql.py nosetests -v \ keystone/tests/unit/backend/legacy_drivers/role/V8/sql.py nosetests -v \ keystone/tests/unit/backend/legacy_drivers/federation/V8/api_v3.py nosetests -v \ keystone/tests/unit/backend/legacy_drivers/resource/V8/sql.py [testenv:pep8] deps = .[bandit] {[testenv]deps} commands = flake8 # Run bash8 during pep8 runs to ensure violations are caught by # the check and gate queues bashate examples/pki/gen_pki.sh # Run security linter bandit -r keystone -x tests [testenv:bandit] # NOTE(browne): This is required for the integration test job of the bandit # project. Please do not remove. deps = .[bandit] commands = bandit -r keystone -x tests [testenv:cover] # Also do not run test_coverage_ext tests while gathering coverage as those # tests conflict with coverage. # NOTE(sdague): this target does not use constraints because # upstream infra does not yet support it. Once that's fixed, we can # drop the install_command. install_command = pip install -U --force-reinstall {opts} {packages} commands = find keystone -type f -name "*.pyc" -delete python setup.py testr --coverage --testr-args='{posargs}' [testenv:patch_cover] commands = bash tools/cover.sh [testenv:venv] # NOTE(jaegerandi): this target does not use constraints because # upstream infra does not yet support it. Once that's fixed, we can # drop the install_command. install_command = pip install -U --force-reinstall {opts} {packages} commands = {posargs} [testenv:debug] 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:debug-py34] basepython = python3.4 commands = # Cleanup *pyc find keystone -type f -name "*.pyc" -delete oslo_debug_helper {posargs} [testenv:functional] basepython = python3.4 deps = -r{toxinidir}/test-requirements.txt setenv = OS_TEST_PATH=./keystone/tests/functional commands = find keystone -type f -name "*.pyc" -delete python setup.py testr --slowest --testr-args='{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 [flake8] filename= *.py,keystone-manage show-source = true # 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) ignore = D100,D101,D102,D103,D104,D203 exclude=.venv,.git,.tox,build,dist,doc,*openstack/common*,*lib/python*,*egg,tools,vendor,.update-venv,*.ini,*.po,*.pot max-complexity=24 [testenv:docs] commands= bash -c "rm -rf doc/build" bash -c "rm -rf doc/source/api" python setup.py build_sphinx [testenv:releasenotes] # NOTE(sdague): this target does not use constraints because # upstream infra does not yet support it. Once that's fixed, we can # drop the install_command. install_command = pip install -U --force-reinstall {opts} {packages} commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html [testenv:genconfig] commands = oslo-config-generator --config-file=config-generator/keystone.conf [hacking] import_exceptions = keystone.i18n six.moves local-check-factory = keystone.tests.hacking.checks.factory