# tox (https://tox.readthedocs.io/) 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 = begin,py38,py39,py310,coverage,security,lint,bundle [testenv] # build a wheel and test it wheel = true wheel_build_env = build # whitelist commands we need whitelist_externals = cp # install everything via requirements-dev.txt, so that developer environment # is the same as the tox environment (for ease of use/no weird gotchas in # local dev results vs. tox results) and also to avoid ticky-tacky maintenance # of "oh this particular env has weird results unless I install foo" --- just # shotgun blast install everything everywhere deps = -rrequirements/requirements-dev.txt [testenv:build] # require setuptools when building deps = setuptools [testenv:begin] # clean up potential previous coverage runs skip_install = true commands = coverage erase [testenv:py38] # run pytest with coverage commands = pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch [testenv:py39] # run pytest with coverage commands = pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch [testenv:py310] # run pytest with coverage commands = pytest --cov-append --cov={envsitepackagesdir}/incorporealcms/ --cov-branch [testenv:coverage] # report on coverage runs from above skip_install = true commands = coverage report --fail-under=95 --show-missing [testenv:security] # run security checks # # again it seems the most valuable here to run against the packaged code commands = bandit {envsitepackagesdir}/incorporealcms/ -r safety check -r requirements/requirements-dev.txt [testenv:lint] # run style checks commands = flake8 - flake8 --disable-noqa --ignore= --select=E,W,F,C,D,A,G,B,I,T,M,DUO [testenv:bundle] # take extra actions (build sdist, sphinx, whatever) to completely package the app commands = cp -r {distdir} . python setup.py sdist [coverage:paths] source = ./ .tox/**/site-packages/ [coverage:run] branch = True # redundant with pytest --cov above, but this tricks the coverage.xml report into # using the full path, otherwise files with the same name in different paths # get clobbered. maybe appends would fix this, IDK include = .tox/**/incorporealcms/ omit = **/_version.py [flake8] enable-extensions = G,M exclude = .tox/ versioneer.py _version.py instance/ extend-ignore = T101 max-complexity = 10 max-line-length = 120 [isort] line_length = 120 [pytest] python_files = *_tests.py tests.py test_*.py