From 523ccf8d3ef71cde2b205e6d395b12c0facf22c8 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Wed, 3 Feb 2016 13:20:53 +0000 Subject: [PATCH] Revise all lint tests and add consolidated 'linters' tox environment OpenStack-Infra has requested that lint tests be pipelined into the 'linters' tox target in order to make more efficient use of nodepool resources. This patch: - Ensures that a complete set of lints tests is available in individual tox targets. - Adds a 'linters' target which executes all the other lints tests. Change-Id: I9290dfefef981b5402a98b3fbdb59d70c2357855 --- tox.ini | 55 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/tox.ini b/tox.ini index 200ff76..9ad0eef 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] minversion = 1.6 skipsdist = True -envlist = docs,pep8,ansible-syntax,ansible-lint,functional +envlist = docs,linters,functional [testenv] usedevelop = True @@ -19,14 +19,12 @@ commands= deps = -r{toxinidir}/test-requirements.txt commands = {posargs} -# Run various lint checks [testenv:pep8] deps = - bashate flake8 whitelist_externals = bash -# Run hacking/flake8 check for all python files commands = + # Run hacking/flake8 check for all python files bash -c "grep -Irl \ -e '!/usr/bin/env python' \ -e '!/bin/python' \ @@ -39,26 +37,30 @@ commands = --exclude '*.sh' \ {toxinidir} | xargs flake8 --verbose" -# 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 -Irl \ - -e '!/usr/bin/env bash' \ - -e '!/bin/bash' \ - -e '!/bin/sh' \ - --exclude-dir '.*' \ - --exclude-dir '*.egg' \ - --exclude-dir '*.egg-info' \ - --exclude 'tox.ini' \ - {toxinidir} | xargs bashate --verbose --ignore=E003" - [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 +# F403 'from ansible.module_utils.basic import *' used; +# unable to detect undefined names # 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" + [testenv:ansible-syntax] +deps = + ansible>1.9,<2.0 changedir = tests commands = ansible-playbook -i inventory \ @@ -68,6 +70,9 @@ commands = test.yml [testenv:ansible-lint] +deps = + ansible>1.9,<2.0 + ansible-lint changedir = tests commands = ansible-lint test.yml @@ -77,3 +82,17 @@ commands = ansible-playbook -i inventory \ -e "rolename={toxinidir}" \ test.yml + +[testenv:linters] +deps = + {[testenv:pep8]deps} + {[testenv:bashate]deps} + {[testenv:ansible-lint]deps} + # note that the ansible-syntax deps are omitted on purpose as the + # ansible-lint env contains duplicate items in its dep list +whitelist_externals = bash +commands = + {[testenv:pep8]commands} + {[testenv:bashate]commands} + {[testenv:ansible-lint]commands} + {[testenv:ansible-syntax]commands}