[tox] envlist = {py39,py310,py311,py312,py313}-{nocov,cov,diffcov}{,-mysql,-pg},qa #recreate = True skip_missing_interpreters = True [testenv] commands = nocov: python -m nose2 -v {posargs} cov,diffcov: python -m coverage run {[coverage]rc} -m nose2 {posargs} cov,diffcov: python -m coverage combine {[coverage]rc} cov: python -m coverage html {[coverage]rc} cov: python -m coverage report -m {[coverage]rc} --fail-under=93 diffcov: python -m coverage xml {[coverage]rc} diffcov: diff-cover coverage.xml --html-report diffcov.html --compare-branch origin/master diffcov: diff-cover coverage.xml --fail-under=100 --compare-branch origin/master #sitepackages = True usedevelop = True deps = flufl.testing>=0.8 nose2 cov,diffcov: coverage pg: psycopg2-binary mysql: pymysql diffcov: diff_cover>=6.0 passenv = MAILMAN_* PYTHON* LANG* LC_* GIT_* HOME setenv = cov: COVERAGE_PROCESS_START={[coverage]rcfile} cov: COVERAGE_OPTIONS="-p" cov: COVERAGE_FILE={toxinidir}/.coverage allowlist_externals = git [testenv:qa] basepython = python3 commands = python -m flake8 src isort --check-only . deps = flake8>3.0 isort [testenv:docs] basepython = python3 commands = sphinx-build -t html . build/sphinx/html deps = -rrequirements-docs.txt [coverage] rcfile = {toxinidir}/coverage.ini rc = --rcfile={[coverage]rcfile} [flake8] exclude = src/mailman/compat/*.py hang-closing = False jobs = 1 max-line-length = 79 [isort] include_trailing_comma = True known_first_party = mailman length_sort_straight = True lines_after_imports = 2 lines_between_types = 1 multi_line_output = 3 order_by_type = False no_sections = True combine_as_imports = True [testenv:sort-imports] basepython = python3 commands = isort . deps = isort # setup.cfg or tox.ini [check-manifest] ignore = dev/* port_me/* *.yml ignore-bad-ideas = src/mailman/testing/*