mirror of
https://github.com/linux-system-roles/network.git
synced 2026-01-23 02:15:17 +00:00
This commit introduces the refactored Travis CI setup and tox.ini to fullfil the need to have common CI setup across all roles. The current proposal and discussion can be found at: https://github.com/linux-system-roles/template/issues/4
232 lines
5.4 KiB
INI
232 lines
5.4 KiB
INI
[tox]
|
|
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:black]
|
|
deps =
|
|
black
|
|
commands =
|
|
black --check --diff --include "^[^.].*\.py$" --exclude "/(\.[^.].*|tests/roles)/" .
|
|
|
|
[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}
|
|
|
|
# Custom role settings may set LSR_PYLINT_DIRS environment variable if there is
|
|
# a reason to have other than default directories (library/ module_utils/ and
|
|
# tests/). For example, network role should have this set like
|
|
#
|
|
# LSR_PYLINT_DIRS="library/network_connections.py module_utils/network_lsr tests/unit/test_network_connections.py"
|
|
#
|
|
[testenv:pylint]
|
|
basepython = python2.7
|
|
setenv =
|
|
{[base]setenv}
|
|
deps =
|
|
pylint>=1.8.4
|
|
ansible
|
|
commands =
|
|
pylint --errors-only \
|
|
{posargs} \
|
|
{env:LSR_PYLINT_DIRS:library module_utils tests}
|
|
|
|
[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
|
|
|
|
# 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/before_install.sh` a snippet:
|
|
#
|
|
# if [ x${LSRENV} = x3.6 ]; then
|
|
# LSR_TEXTRA_DEPS='PyYAML'
|
|
# LSR_TEXTRA_DIR='tests'
|
|
# LSR_TEXTRA_CMD='./ensure_non_running_provider.py'
|
|
# fi
|
|
#
|
|
[testenv:extra]
|
|
passenv = *
|
|
deps =
|
|
{env:LSR_TEXTRA_DEPS}
|
|
changedir = {toxinidir}/{env:LSR_TEXTRA_DIR:.}
|
|
commands =
|
|
{env:LSR_TEXTRA_CMD:python --version}
|
|
|
|
# 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]
|
|
deps =
|
|
docker
|
|
molecule
|
|
{env:LSR_MOLECULE_DEPS}
|
|
|
|
[testenv:molecule_lint]
|
|
deps =
|
|
{[molecule]deps}
|
|
commands_pre =
|
|
molecule --version
|
|
ansible --version
|
|
commands =
|
|
molecule {posargs} lint
|
|
|
|
[testenv:molecule_syntax]
|
|
deps =
|
|
{[molecule]deps}
|
|
commands =
|
|
molecule {posargs} syntax
|
|
|
|
[testenv:molecule_test]
|
|
deps =
|
|
{[molecule]deps}
|
|
commands =
|
|
molecule {posargs} test
|
|
|
|
[pytest]
|
|
addopts = -rxs
|
|
|
|
[flake8]
|
|
show_source = true
|
|
max-line-length = 88
|
|
ignore = E402,W503
|
|
|
|
[pylint]
|
|
max-line-length = 88
|
|
disable = wrong-import-position
|
|
|
|
[pycodestyle]
|
|
max-line-length = 88
|
|
|
|
[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
|