diff --git a/test-requirements.txt b/test-requirements.txt index a06b604..ce31268 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,5 +1,5 @@ -ansible-lint -ansible>=1.9.1,<2.0.0 +bashate +flake8 # this is required for the docs build jobs sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 diff --git a/tox.ini b/tox.ini index b621131..e657661 100644 --- a/tox.ini +++ b/tox.ini @@ -3,66 +3,69 @@ minversion = 1.6 skipsdist = True envlist = docs,linters + [testenv] usedevelop = True install_command = pip install -U {opts} {packages} -setenv = VIRTUAL_ENV={envdir} deps = -r{toxinidir}/test-requirements.txt +commands = /usr/bin/find . -type f -name "*.pyc" -delete +passenv = + HOME +whitelist_externals = + bash +setenv = + VIRTUAL_ENV={envdir} + [testenv:docs] commands= python setup.py build_sphinx + # environment used by the -infra templated docs job [testenv:venv] deps = -r{toxinidir}/test-requirements.txt commands = {posargs} + [testenv:pep8] -deps = - flake8 -whitelist_externals = bash commands = # Run hacking/flake8 check for all python files - bash -c "grep -Irl \ - -e '!/usr/bin/env python' \ - -e '!/bin/python' \ - -e '!/usr/bin/python' \ - --exclude-dir '.*' \ - --exclude-dir 'doc' \ - --exclude-dir '*.egg' \ - --exclude-dir '*.egg-info' \ - --exclude-dir '*templates' \ - --exclude 'tox.ini' \ - --exclude '*.sh' \ + bash -c "grep --recursive --binary-files=without-match \ + --files-with-match '^.!.*python$' \ + --exclude-dir .eggs \ + --exclude-dir .git \ + --exclude-dir .tox \ + --exclude-dir *.egg-info \ + --exclude-dir doc \ {toxinidir} | xargs flake8 --verbose" [flake8] # Ignores the following rules due to how ansible modules work in general # F403 'from ansible.module_utils.basic import *' used; # unable to detect undefined names -# H303 No wildcard (*) import. +# H303 No wildcard (*) import. ignore=F403,H303 + [testenv:bashate] -deps = - bashate -whitelist_externals = bash commands = - # Run bashate check for all bash scripts - # Ignores the following rules: - # E003: Indent not multiple of 4 (we prefer to use multiples of 2) - bash -c "grep --recursive --binary-files=without-match \ - --files-with-match '^.!.*\(ba\)\?sh$' \ - --exclude-dir .tox \ - --exclude-dir .git \ - {toxinidir} | xargs bashate --error . --verbose --ignore=E003" + # Run bashate check for all bash scripts + # Ignores the following rules: + # E003: Indent not multiple of 4 (we prefer to use multiples of 2) + # E006: Line longer than 79 columns (as many scripts use jinja + # templating, this is very difficult) + # E040: Syntax error determined using `bash -n` (as many scripts + # use jinja templating, this will often fail and the syntax + # error will be discovered in execution anyway) + bash -c "grep --recursive --binary-files=without-match \ + --files-with-match '^.!.*\(ba\)\?sh$' \ + --exclude-dir .tox \ + --exclude-dir .git \ + {toxinidir} | xargs bashate --error . --verbose --ignore=E003,E006,E040" + [testenv:linters] -deps = - {[testenv:pep8]deps} - {[testenv:bashate]deps} -whitelist_externals = bash commands = - {[testenv:pep8]commands} - {[testenv:bashate]commands} + {[testenv:pep8]commands} + {[testenv:bashate]commands}