
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>
237 lines
7.6 KiB
INI
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
|