
Updated tox configs on software and software-client and update zuul jobs to call python tests on them using their individual configs. Fixed a few flake8 issues on both directories. software-client pylint test set to non-voting for now. Test Plan: In a venv: pass: tox -c software/tox.ini -eflake8 pass: tox -c software/tox.ini -epylint pass: tox -c software-client/tox.ini -eflake8 Story: 2010676 Task: 51082 Depends-On: https://review.opendev.org/c/starlingx/update/+/930489 Change-Id: I3b8e2612c4bc579e2284383f14b2879a07d0d7bd Signed-off-by: Leonardo Fagundes Luz Serrano <Leonardo.FagundesLuzSerrano@windriver.com>
170 lines
4.9 KiB
INI
170 lines
4.9 KiB
INI
#
|
|
# Copyright (c) 2024 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Tox is a tool for running tests in multiple virtualenvs.
|
|
#
|
|
# To run this, from the update repo root directory, execute the following:
|
|
# - Install python3.9: apt install python3.9 python3.9-pip python3.9-venv
|
|
# - Create a py39 venv: python3.9 -m venv .venv
|
|
# - Source the venv: source .venv/bin/activate
|
|
# - Install tox in the venv: pip install tox
|
|
# - Run tox: tox -c software/tox.ini
|
|
|
|
[tox]
|
|
envlist = bandit, cover, flake8, py39, pylint, shellcheck, bashate
|
|
minversion = 4
|
|
skipsdist = True
|
|
|
|
# Default value would be {work_dir}/.tmp
|
|
# Setting to /tmp makes paths shorter, preventing issues with long paths
|
|
temp_dir = /tmp/update_repo_tox
|
|
|
|
# Custom variables
|
|
stxdir = {toxinidir}/../..
|
|
exclude_dirs = .env,.venv,.git,.tox
|
|
exclude_dirs_glob = *.env*,*.venv*,*.git*,*.tox*
|
|
|
|
|
|
[testenv]
|
|
allowlist_externals =
|
|
bash
|
|
basepython = python3.9 # Matching debian bullseye, base OS used on STX
|
|
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
-e{[tox]stxdir}/fault/fm-api/source
|
|
-e{[tox]stxdir}/config/tsconfig/tsconfig
|
|
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt}
|
|
|
|
passenv =
|
|
XDG_CACHE_HOME
|
|
setenv = VIRTUAL_ENV={envdir}
|
|
LANG=en_US.UTF-8
|
|
LANGUAGE=en_US:en
|
|
LC_ALL=C
|
|
OS_STDERR_CAPTURE=1
|
|
OS_STDOUT_CAPTURE=1
|
|
OS_TEST_TIMEOUT=60
|
|
PYTHONDONTWRITEBYTECODE=True
|
|
PYTHONHASHSEED=0
|
|
sitepackages = False
|
|
usedevelop = true
|
|
|
|
|
|
[testenv:bandit]
|
|
description =
|
|
Find common security issues in Python code
|
|
commands =
|
|
# Using --silent flag so bandit does not report on files with no issues
|
|
bandit --recursive --silent --exclude {[tox]exclude_dirs_glob},*tests* .
|
|
commands_post =
|
|
bandit --version
|
|
|
|
|
|
[testenv:cover]
|
|
description = Measures effectiveness of python tests
|
|
setenv =
|
|
{[testenv]setenv}
|
|
PYTHON=coverage run --parallel-mode
|
|
commands =
|
|
coverage erase
|
|
stestr run {posargs}
|
|
coverage combine
|
|
coverage html -d cover
|
|
coverage xml -o cover/coverage.xml
|
|
coverage report
|
|
|
|
|
|
[flake8]
|
|
description =
|
|
Flake8 settings.
|
|
While some linters have separate configuration files,
|
|
flake8 configuration is integrated into Tox.
|
|
|
|
# Set max line length allowed in python scripts
|
|
max-line-length = 120
|
|
|
|
# List number of errors of each type
|
|
statistics = True
|
|
|
|
# Show code line that triggered the error
|
|
show-source = True
|
|
|
|
# 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-extensions = H106, H203
|
|
|
|
# TODO: Fix these errors and remove these error suppressions
|
|
# E402 module level import not at top of file => ~90 instances
|
|
# E501 line too long => ~15 instances
|
|
# H105 Don't use author tags => 1 instance
|
|
# H306 imports not in alphabetical order => ~80 instances
|
|
# H404 multi line docstring should start without a leading new line => ~80 instances
|
|
# H405 multi line docstring summary not separated with an empty line => ~930 instances
|
|
extend-ignore = E402, E501, H105, H306, H404, H405
|
|
|
|
|
|
[testenv:flake8]
|
|
description = Checks PEP8 style formatting in python scripts.
|
|
commands =
|
|
flake8 --extend-exclude {[tox]exclude_dirs} {posargs}
|
|
commands_post =
|
|
flake8 --version
|
|
|
|
|
|
[stestr]
|
|
description = Settings for testenv:py39 tox env
|
|
test_path=./software/tests
|
|
top_dir=./
|
|
group_regex=([^\.]*\.)*
|
|
|
|
|
|
[testenv:py39]
|
|
description = Run python unit tests using py39
|
|
basepython = python3.9
|
|
commands =
|
|
stestr run {posargs}
|
|
stestr slowest
|
|
|
|
|
|
# TODO: Review pylintrc configs and error suppressions
|
|
[testenv:pylint]
|
|
description =
|
|
Run pylint on update/software/software.
|
|
Configs in update/software/pylint.rc
|
|
commands =
|
|
pylint software --rcfile=./pylint.rc
|
|
|
|
|
|
[testenv:shellcheck]
|
|
description =
|
|
Runs a shell/bash linter on scripts with a shebang containing bash or sh
|
|
commands =
|
|
# Shellcheck does not have a recursive option. Needs to be run on each file individually.
|
|
bash -c "grep -Rl . -e '\#\!.*\(sh\|bash\)' --exclude-dir={{[tox]exclude_dirs}} | \
|
|
xargs --verbose --no-run-if-empty -I {} \
|
|
shellcheck {} \
|
|
"
|
|
commands_post =
|
|
# List files checked
|
|
bash -c "grep -Rl . -e '\#\!.*\(sh\|bash\)' --exclude-dir={{[tox]exclude_dirs}}"
|
|
shellcheck --version
|
|
|
|
|
|
[testenv:bashate]
|
|
description =
|
|
Runs a shell/bash formatting and style check on scripts with a shebang containing bash or sh
|
|
commands =
|
|
# Bashate does not have a recursive option. Needs to be run on each file individually.
|
|
bash -c "grep -Rl . -e '\#\!.*\(sh\|bash\)' --exclude-dir={{[tox]exclude_dirs}} | \
|
|
xargs --verbose --no-run-if-empty -I {} \
|
|
bashate --verbose --max-line-length 120 {} \
|
|
"
|
|
commands_post =
|
|
# List files checked
|
|
bash -c "grep -Rl . -e '\#\!.*\(sh\|bash\)' --exclude-dir={{[tox]exclude_dirs}}"
|
|
bashate --version
|