[tox] minversion = 2.0 envlist = docs, linters skipdist = True [testenv] usedevelop = True install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages} passenv = * setenv = VIRTUAL_ENV={envdir} ANSIBLE_ACTION_PLUGINS={toxinidir}/tripleo_ansible/ansible_plugins/action ANSIBLE_CALLBACK_PLUGINS={toxinidir}/tripleo_ansible/ansible_plugins/callback ANSIBLE_FILTER_PLUGINS={toxinidir}/tripleo_ansible/ansible_plugins/filter ANSIBLE_LIBRARY={toxinidir}/tripleo_ansible/ansible_plugins/modules ANSIBLE_MODULE_UTILS={toxinidir}/tripleo_ansible/ansible_plugins/module_utils ANSIBLE_ROLES_PATH={toxinidir}/tripleo_ansible/roles ANSIBLE_INVENTORY={toxinidir}/tests/hosts.ini ANSIBLE_NOCOWS=1 ANSIBLE_RETRY_FILES_ENABLED=0 ANSIBLE_STDOUT_CALLBACK=debug VIRTUAL_ENV={envdir} # pip: Avoid 2020-01-01 warnings: https://github.com/pypa/pip/issues/6207 # paramiko CryptographyDeprecationWarning: https://github.com/ansible/ansible/issues/52598 PYTHONWARNINGS=ignore:DEPRECATION::pip._internal.cli.base_command,ignore::UserWarning PIP_DISABLE_PIP_VERSION_CHECK=1 deps = -r {toxinidir}/test-requirements.txt whitelist_externals = bash [testenv:bindep] # 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:pep8] envdir = {toxworkdir}/linters commands = python -m pre_commit run flake8 -a [testenv:ansible-lint] envdir = {toxworkdir}/linters deps = {[testenv:linters]deps} commands = bash -c "ansible-galaxy install -fr {toxinidir}/tripleo_ansible/ansible-role-requirements.yml" python -m pre_commit run ansible-lint -a [testenv:yamllint] envdir = {toxworkdir}/linters deps = {[testenv:linters]deps} commands = python -m pre_commit run yamllint -a [testenv:bashate] envdir = {toxworkdir}/linters deps = {[testenv:linters]deps} commands = python -m pre_commit run bashate -a [testenv:whitespace] envdir = {toxworkdir}/linters deps = {[testenv:linters]deps} commands = python -m pre_commit run trailing-whitespace -a [testenv:shebangs] envdir = {toxworkdir}/linters deps = {[testenv:linters]deps} commands = python -m pre_commit run check-executables-have-shebangs -a [testenv:linters] deps = -r {toxinidir}/test-requirements.txt -r {toxinidir}/requirements.txt commands = {[testenv:pep8]commands} {[testenv:ansible-lint]commands} {[testenv:bashate]commands} {[testenv:yamllint]commands} {[testenv:whitespace]commands} {[testenv:shebangs]commands} [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:docs] basepython = python3 deps = -r{toxinidir}/doc/requirements.txt commands= doc8 doc sphinx-build -a -E -W -d doc/build/doctrees -b html doc/source doc/build/html [doc8] # Settings for doc8: extensions = .rst ignore = D001 [testenv:venv] commands = {posargs} [testenv:role-addition] basepython={[testenv:mol]basepython} deps= {[testenv:mol]deps} {[testenv:linters]deps} commands = bash -c "ansible-playbook -i localhost, role-addition.yml -e role_name=skeleton_test" bash -c "pushd {toxinidir}/tripleo_ansible/roles/skeleton_test; molecule test --all; popd" {[testenv:linters]commands} [testenv:mol] # environment naming scheme "mol-$ROLE_NAME" # basepython forces tox to use system python and avoid other # python versions like pyenv ones basepython=python deps = ansi2html docker>=3.7 pytest pytest-cov pytest-html pytest-xdist mock molecule>=2.22rc1 selinux [testenv:mol-aide] basepython = {[testenv:mol]basepython} deps = {[testenv:mol]deps} changedir = {toxinidir}/tripleo_ansible/roles/aide commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py [testenv:mol-test_deps] basepython={[testenv:mol]basepython} deps={[testenv:mol]deps} changedir = {toxinidir}/tripleo_ansible/roles/test_deps envdir = {toxworkdir}/mol commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py [testenv:mol-test_package_action] basepython = {[testenv:mol]basepython} deps = {[testenv:mol]deps} changedir = {toxinidir}/tripleo_ansible/roles/test_package_action commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py [testenv:mol-test_package_action-default] basepython = {[testenv:mol-test_package_action]basepython} deps = {[testenv:mol-test_package_action]deps} changedir = {[testenv:mol-test_package_action]changedir} commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py --scenario=default [testenv:mol-test_package_action-negative] basepython = {[testenv:mol-test_package_action]basepython} deps = {[testenv:mol-test_package_action]deps} changedir = {[testenv:mol-test_package_action]changedir} commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py --scenario=negative [testenv:mol-test_package_action-positive] basepython = {[testenv:mol-test_package_action]basepython} deps = {[testenv:mol-test_package_action]deps} changedir = {[testenv:mol-test_package_action]changedir} commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py --scenario=positive [testenv:mol-tuned] basepython = {[testenv:mol]basepython} deps = {[testenv:mol]deps} changedir = {toxinidir}/tripleo_ansible/roles/tuned commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py