Files
update/tox.ini
Leonardo Fagundes Luz Serrano 5d72de703f Tox/Zuul: Docs: Resolve dependency conflict
The api-ref tox job was using the constraints file
set for runtime tests (the one for the debian bullseye node).
However, doc jobs run on the default zuul node,
which currently is ubuntu noble. Due to this,
all doc jobs needed their install deps command changed.

Test Plan:
In a ubuntu noble container, install python3-venv
and bindep.txt deps. Create a venv and install tox. Run:
  pass: tox -eapi-ref
  pass: tox -ereleasenotes
  pass: tox -edocs
  pass: tox -enewnote

Partial-Bug: 2085550

Change-Id: Idef0fa628dab2d1f97c397b4a0234f6e66e0537d
Signed-off-by: Leonardo Fagundes Luz Serrano <Leonardo.FagundesLuzSerrano@windriver.com>
2024-11-18 12:25:05 -03:00

237 lines
7.6 KiB
INI

#
# Copyright (c) 2019-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
envlist = linters,flake8,py27,py36,pylint,cover
minversion = 2.3
skipsdist = True
[testenv]
cgcs_patch_dir = {toxinidir}/cgcs-patch/cgcs-patch
cgcs_patch_src_dir = {[testenv]cgcs_patch_dir}/cgcs_patch
patch_alarm_dir = {toxinidir}/patch-alarm/patch-alarm
patch_alarm_src_dir = {[testenv]patch_alarm_dir}/patch_alarm
setenv =
VIRTUAL_ENV={envdir}
OS_STDOUT_CAPTURE=1
OS_STDERR_CAPTURE=1
OS_TEST_TIMEOUT=60
PYTHONDONTWRITEBYTECODE=True
PIP_DISABLE_PIP_VERSION_CHECK=1
passenv =
XDG_CACHE_HOME
commands = find {toxinidir} -type f -not -path '{toxinidir}/.tox/*' -not -path '*/__pycache__/*' -name '*.py[c|o]' -delete
install_command = pip install -U \
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \
{opts} {packages}
# must set sitepackages to true in order to 'import rpm'
sitepackages=True
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
-e{[testenv]cgcs_patch_dir}
-e{[testenv]patch_alarm_dir}
allowlist_externals = find
[testenv:linters]
basepython = python3
allowlist_externals = bash
commands =
bash -c "find {toxinidir} \
-not \( -type d -name .?\* -prune \) \
-type f \
-not -name \*~ \
-not -name \*.md \
\( \
-name \*.sh \
-or -not -wholename \*/devstack/files/\* \
-wholename \*/devstack/\* \
\) \
-print0 | xargs -0 bashate -v -e 'E*' -iE006"
bash -c "find {toxinidir} \
\( -name .tox -prune \) \
-o -type f -name '*.yaml' \
-print0 | xargs -0 yamllint"
[flake8]
filename=
*.preapply
*.preremove
*.py
# ignore below errors , will fix flake8 errors in future
# H101 Use TODO(NAME)
# H102 Apache 2.0 license header not found
# H105 Don't use author tags
# H306 imports not in alphabetical order
# H401 docstring should not start with a space
# H404 multi line docstring should start without a leading new line
# H405 multi line docstring summary not separated with an empty line
# Note: W503 and W504 are mutually exclusive. Must select one of them to suppress.
# W504 line break after binary operator
# E501 line too long. skipped because some of the code files include templates
# that end up quite wide
# F401 'XXXXX' imported but unused
show-source = True
ignore = H101,H102,H105,H306,H401,H404,H405,H216,
W504,E501,F401,
exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,release-tag-*
# H106: Don't put vim configuration in source files (off by default).
# H203: Use assertIs(Not)None to check for None (off by default).
# enable: H904 Delay string interpolations at logging calls (off by default).
enable-extensions = H106 H203 H904
max-line-length = 120
[testenv:flake8]
basepython = python3
allowlist_externals = cp
find
tox
recreate = True
commands = {[testenv]commands}
flake8 cgcs-patch/cgcs-patch/cgcs_patch
flake8 patch-alarm/patch-alarm/patch_alarm
flake8 {toxinidir}/patch-scripts/kube-upgrade
flake8 sw-patch/cgcs-patch/cgcs_patch
flake8 sw-patch/cgcs-patch/cgcs_make_patch
[testenv:venv]
basepython = python3
commands = {posargs}
[nosetests]
verbosity=2
[testenv:py27]
basepython = python2.7
deps = {[testenv]deps}
allowlist_externals = cp
find
tox
recreate = True
# Note: There is no py27 target for sw-patch
commands = {[testenv]commands}
tox -c cgcs-patch/cgcs-patch -e py27
tox -c patch-alarm/patch-alarm -e py27
[testenv:py36]
basepython = python3
deps = {[testenv]deps}
allowlist_externals = cp
find
tox
recreate = True
commands = {[testenv]commands}
tox -c cgcs-patch/cgcs-patch -e py36
tox -c patch-alarm/patch-alarm -e py36
tox -c sw-patch/cgcs-patch -e py36
[bandit]
# B101: Test for use of assert
# B104: Test for binding to all interfaces
# B110: Try, Except, Pass detected.
# B303: Use of insecure MD2, MD4, MD5, or SHA1 hash function.
# B311: Standard pseudo-random generators are not suitable for security/cryptographic purposes
# B314: Blacklisted calls to xml.etree.ElementTree
# B318: Blacklisted calls to xml.dom.minidom
# B322: Blacklist call to input (this is safe on python3)
# B404: Import of subprocess module
# B405: import xml.etree
# B408: import xml.minidom
# B413: import pyCrypto
# B506: Test for use of yaml load
# B602: Test for use of popen with shell equals true
# B603: Test for use of subprocess without shell equals true
# B607: Test for starting a process with a partial path
skips = B101,B104,B110,B303,B311,B314,B318,B322,B404,B405,B408,B413,B506,B602,B603,B607
exclude = tests
[testenv:bandit]
basepython = python3
description = Bandit code scan for *.py files source code folders
deps = -r{toxinidir}/test-requirements.txt
commands = bandit --ini tox.ini -r {toxinidir}/ -x '**/.tox/**,**/.eggs/**' -lll
[testenv:pylint]
basepython = python3
allowlist_externals = cp
find
tox
recreate = True
commands = {[testenv]commands}
tox -c cgcs-patch/cgcs-patch -e pylint
tox -c patch-alarm/patch-alarm -e pylint
tox -c sw-patch/cgcs-patch -e pylint
[testenv:cover]
basepython = python3
deps = {[testenv]deps}
allowlist_externals = cp
find
tox
recreate = True
commands = {[testenv]commands}
tox -c cgcs-patch/cgcs-patch -e cover
tox -c patch-alarm/patch-alarm -e cover
tox -c sw-patch/cgcs-patch -e cover
[testenv:docs]
basepython = python3
install_command = pip install -U {opts} {packages}
deps = -r{toxinidir}/doc/requirements.txt
commands =
rm -rf doc/build
sphinx-build -a -E -W -d doc/build/doctrees -b html doc/source doc/build/html
allowlist_externals = rm
[testenv:releasenotes]
basepython = python3
install_command = pip install -U {opts} {packages}
deps = -r{toxinidir}/doc/requirements.txt
commands =
rm -rf releasenotes/build
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
allowlist_externals =
rm
reno
[testenv:newnote]
basepython = python3
# Re-use the releasenotes venv
envdir = {toxworkdir}/releasenotes
install_command = pip install -U {opts} {packages}
deps = -r{toxinidir}/doc/requirements.txt
commands = reno new {posargs}
[testenv:api-ref]
basepython = python3
install_command = pip install -U {opts} {packages}
deps =
-r{toxinidir}/doc/requirements.txt
commands =
rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
allowlist_externals = rm
[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.
skip_install = True
deps = bindep
commands = bindep test