1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
[tox]
requires =
setuptools>=65.3
tox>=4.24.2
tox-extra>=2.1
tox-uv>=1.25
env_list =
py312
py311
py310
lint
pkg
docs
skip_missing_interpreters = true
[testenv]
description =
Run the tests
devel: w/ constraints, some devel dependencies
package = editable
deps =
devel: requests@ git+https://github.com/psf/requests.git
extras =
cli
opt
test
pass_env =
CI
CI_JIRA_*
CURL_CA_BUNDLE
FORCE_COLOR
GITHUB_*
HOME
LANG
LC_*
NO_COLOR
PYTEST_*
PYTEST_REQPASS
PYTHON*
PYTHONBREAKPOINT
PYTHONIOENCODING
PYTHONPYCACHEPREFIX
PY_COLORS
REQUESTS_CA_BUNDLE
RTD_TOKEN
SETUPTOOLS_SCM_DEBUG
SSH_AUTH_SOCK
SSL_CERT_FILE
TWINE_*
USERNAME
UV_*
XDG_CACHE_HOME
set_env =
CI_JIRA_ADMIN = admin
CI_JIRA_ADMIN_PASSWORD = admin
CI_JIRA_ISSUE = Task
CI_JIRA_URL = http://localhost:2990/jira
CI_JIRA_USER = jira_user
CI_JIRA_USER_FULL_NAME = Newly Created CI User
CI_JIRA_USER_PASSWORD = jira
COVERAGE_FILE = {env:COVERAGE_FILE:{env_dir}/.coverage.{env_name}}
COVERAGE_PROCESS_START = {tox_root}/pyproject.toml
FORCE_COLOR = 1
PIP_CONSTRAINT = {tox_root}/.config/constraints.txt
PIP_DISABLE_PIP_VERSION_CHECK = 1
PRE_COMMIT_COLOR = always
UV_CONSTRAINT = {tox_root}/.config/constraints.txt
deps, devel, hook, lint, pkg, pre, py310, schemas: PIP_CONSTRAINT = /dev/null
deps, devel, hook, lint, pkg, pre, py310, schemas: UV_CONSTRAINT = /dev/null
devel: PIP_PRE = 1
devel: UV_PRERELEASE = allow
commands_pre =
sh -c "rm -f {env_dir}/.coverage.* 2>/dev/null || true"
{env_python} -m pip check
commands =
git clean -xdf jira tests
{env_python} make_local_jira_user.py
coverage run -m pytest {posargs: \
-ra \
--showlocals \
--doctest-modules \
--durations=10 \
}
{py,py310,py311,py312,py313}: sh -c "coverage combine -a -q --data-file={env_dir}/.coverage {work_dir}/*/.coverage.* && coverage xml --data-file={env_dir}/.coverage -o {env_dir}/coverage.xml --fail-under=0 && coverage report --data-file={env_dir}/.coverage"
allowlist_externals =
git
sh
docker = jira
[testenv:lint]
description = Run all linters
skip_install = true
deps =
pre-commit>=4.1
pre-commit-uv>=4.1.4
pytest>=7.2.2 # to updated schemas
setuptools>=51.1.1
pass_env =
{[testenv]pass_env}
PRE_COMMIT_HOME
commands_pre =
commands =
{env_python} -m pre_commit run --all-files --show-diff-on-failure {posargs:}
[testenv:pkg]
description =
Build package, verify metadata, install package
skip_install = true
deps =
build>=0.9
pip
pipx
twine>=4.0.1
commands_pre =
commands =
{env_python} -c 'import os.path, shutil, sys; \
dist_dir = os.path.join("{tox_root}", "dist"); \
os.path.isdir(dist_dir) or sys.exit(0); \
print("Removing \{!s\} contents...".format(dist_dir), file=sys.stderr); \
shutil.rmtree(dist_dir)'
{env_python} -m build --outdir {tox_root}/dist/ {tox_root}
python3 -m twine check --strict {tox_root}/dist/*
sh -c "pip3 install {tox_root}/dist/*.whl"
sh -c "jirashell --help > /dev/null"
{env_python} -m pip uninstall -y jira
[testenv:docs]
description = Builds docs
package = editable
skip_install = false
extras =
cli
docs
set_env =
DYLD_FALLBACK_LIBRARY_PATH = /opt/homebrew/lib:{env:LD_LIBRARY_PATH}
NO_COLOR = 1
TERM = dump
commands_pre =
commands =
sphinx-build \
--verbose \
--write-all \
--nitpicky --fail-on-warning \
-b html --color \
-d "{toxworkdir}/docs_doctree" \
docs/ "{toxworkdir}/docs_out"
python -c \
'import pathlib; ' \
'docs_dir = pathlib.Path(r"{toxworkdir}") / "docs_out"; index_file = docs_dir / "index.html"; print(f"\nDocumentation available under `file://\{index_file\}`\n\nTo serve docs, use `python3 -m http.server --directory \{docs_dir\} 0`\n")'
skipdist = False
[testenv:deps]
description = Bump all test dependencies
skip_install = true
deps =
{[testenv:lint]deps}
commands_pre =
commands =
pre-commit run --all-files --show-diff-on-failure --hook-stage manual deps
pre-commit autoupdate
tox -e lint
env_dir = {work_dir}/lint
[testenv:maintenance]
commands =
python examples/maintenance.py
[docker:jira]
image = addono/jira-software-standalone:latest
[gh-actions]
python =
3.10: py310
3.11: py311
3.12: py312
|