network/tox.ini
Jiri Kucera f21d01ab68 Add pylint wrapper
Add run_pylint.py that probe working directory for python source files
and pass them to pylint. This is needed because pylint expects module
or package, so passing a directory with no __init__.py in it makes
pylint angry. With this change, LSR_PYLINT_DIRS is no longer needed.

Additionally, we no longer need:
- init-hook in pylintrc
- [pylintrc] section in tox.ini, because the configuration from this
  section is now the part of pylintrc
- [pycodestyle] section in tox.ini, because pycodestyle linter is not
  used
2019-07-31 00:52:26 +02:00

226 lines
5.1 KiB
INI

[tox]
envlist =
py{26,27,36,37,38},
black, pylint, flake8,
molecule_{lint,syntax,test},
extra
skipsdist = true
skip_missing_interpreters = true
[testenv]
basepython = python3
# List common dependencies for Python interpreters here:
deps =
py{26,27,36,37,38}: pytest-cov
py{27,36,37,38}: pytest>=3.5.1
py{26,27}: mock
py26: pytest
[base]
passenv = *
setenv =
PYTHONPATH = {toxinidir}/library:{toxinidir}/module_utils
LC_ALL = C
changedir = {toxinidir}/tests
covtarget = {toxinidir}/library --cov {toxinidir}/module_utils
pytesttarget = .
[testenv:py26]
install_command =
pip install {opts} {packages}
list_dependencies_command =
pip freeze
basepython = python2.6
passenv = {[base]passenv}
setenv =
{[base]setenv}
changedir = {[base]changedir}
commands =
pytest --durations=5 \
--cov={[base]covtarget} \
--cov-report=html:htmlcov-py26 \
--cov-report=term \
{posargs} \
{[base]pytesttarget}
[testenv:py27]
basepython = python2.7
passenv = {[base]passenv}
setenv =
{[base]setenv}
changedir = {[base]changedir}
commands =
pytest --durations=5 \
--cov={[base]covtarget} \
--cov-report=html:htmlcov-py27 \
--cov-report=term \
{posargs} \
{[base]pytesttarget}
[testenv:py36]
basepython = python3.6
passenv = {[base]passenv}
setenv =
{[base]setenv}
changedir = {[base]changedir}
commands =
pytest --durations=5 \
--cov={[base]covtarget} \
--cov-report=html:htmlcov-py36 \
--cov-report=term \
{posargs} \
{[base]pytesttarget}
[testenv:py37]
basepython = python3.7
passenv = {[base]passenv}
setenv =
{[base]setenv}
changedir = {[base]changedir}
commands =
pytest --durations=5 \
--cov={[base]covtarget} \
--cov-report=html:htmlcov-py37 \
--cov-report=term \
{posargs} \
{[base]pytesttarget}
[testenv:py38]
basepython = python3.8
passenv = {[base]passenv}
setenv =
{[base]setenv}
changedir = {[base]changedir}
commands =
pytest --durations=5 \
--cov={[base]covtarget} \
--cov-report=html:htmlcov-py38 \
--cov-report=term \
{posargs} \
{[base]pytesttarget}
[testenv:black]
basepython = python3.6
deps =
black
commands =
black --check --diff --include "^[^.].*\.py$" --exclude "/(\.[^.].*|tests/roles)/" .
[testenv:pylint]
basepython = python2.7
setenv =
{[base]setenv}
deps =
colorama
pylint>=1.8.4
ansible
commands =
{envpython} ./run_pylint.py --errors-only {posargs}
[testenv:flake8]
basepython = python2.7
deps =
flake8>=3.5
whitelist_externals = flake8
commands =
flake8 --statistics {posargs} .
[testenv:coveralls]
basepython = python2.7
passenv = TRAVIS TRAVIS_*
deps =
coveralls
changedir = {[base]changedir}
commands =
coveralls
# LSR_MOLECULE_DEPS may contain aditional Molecule dependencies. For example,
# in `network` system role, LSR_MOLECULE_DEPS can be set as
#
# LSR_MOLECULE_DEPS='-rmolecule_requirements.txt'
#
# where `molecule_requirements.txt` contains two lines:
#
# jmespath
# git+https://github.com/tyll/selinux-pypi-shim@fulllocation
#
[molecule]
basepython = python3.5
deps =
docker
molecule
{env:LSR_MOLECULE_DEPS:}
[testenv:molecule_lint]
basepython = {[molecule]basepython}
deps =
{[molecule]deps}
commands_pre =
molecule --version
ansible --version
commands =
molecule {posargs} lint
[testenv:molecule_syntax]
basepython = {[molecule]basepython}
deps =
{[molecule]deps}
commands =
molecule {posargs} syntax
[testenv:molecule_test]
basepython = {[molecule]basepython}
deps =
{[molecule]deps}
commands =
molecule {posargs} test
# Here we provide a way how a role can add its custom command to be run. Such
# extra command is run at the end of each testenv run and is driven by
# environment variables. Involved environment variables are:
#
# LSR_TEXTRA_DEPS
# - contains dependency needed by commands to run smoothly; if more than
# one dependency is needed, use external file together with '-r' option
# (see PEP 508)
#
# LSR_TEXTRA_DIR
# - directory to which to cd
#
# LSR_TEXTRA_CMD
# - custom command to be run
#
# Example: `network` system role need to run `./tests/ensure_non_running_provider.py`
# to check for the existence of `*_provider.yml` playbooks. The script
# is run in Python 3.6.
#
# To make this possible, we add to `.travis/config.sh` a snippet:
#
# export LSR_TEXTRA_DEPS='PyYAML'
# export LSR_TEXTRA_DIR='tests'
# export LSR_TEXTRA_CMD='./ensure_non_running_provider.py'
#
[testenv:extra]
deps =
{env:LSR_TEXTRA_DEPS:}
passenv = *
changedir = {toxinidir}/{env:LSR_TEXTRA_DIR:.}
commands =
{env:LSR_TEXTRA_CMD:python --version}
[pytest]
addopts = -rxs
[flake8]
show_source = true
max-line-length = 88
ignore = E402,W503
[travis]
python =
2.6: py26,extra
2.7: py27,coveralls,flake8,pylint,extra
3.5: molecule_lint,molecule_syntax,molecule_test,extra
3.6: py36,black,extra
3.7: py37,extra
3.8: py38,extra