[tox]
requires = tox>=4
env_list = py{38,39,310,311,312,313,314,315}, ruff, format, mypy, html, misc
[testenv]
description = Run unit tests
package = wheel
extras = test
pass_env = SSH_*
set_env = GIT_PYTHON_BACKEND=cli
commands = pytest --color=yes {posargs}
[testenv:py{38,39,310}]
description = Smoke check supported runtimes without fixture tooling
extras =
commands = python -I -c "import git; from git import _backend; assert _backend.name == 'cli'; print(git.__version__)"
[testenv:ruff]
description = Lint with Ruff
base_python = py{39,310,311,312,38}
deps = ruff
set_env =
CLICOLOR_FORCE = 1 # Set NO_COLOR to override this.
commands = ruff check .
[testenv:gix]
set_env = GIT_PYTHON_BACKEND=gix
description = Run the suite with released GixPython and CLI fallback
base_python = python3
package_env = .pkg-gix
wheel_build_env = .pkg-gix
extras = test, gix
commands = python test/run-local.py {posargs:--backend-report=.cache/gix-coverage.json}
[testenv:format]
description = Check formatting with Ruff
base_python = py{39,310,311,312,38}
deps = ruff
set_env =
CLICOLOR_FORCE = 1 # Set NO_COLOR to override this.
commands = ruff format --check .
[testenv:mypy]
description = Typecheck with mypy
base_python = py{39,310,311,312,38}
set_env =
MYPY_FORCE_COLOR = 1
commands = mypy
ignore_outcome = true
[testenv:html]
description = Build HTML documentation
base_python = py{39,310,311,312,38}
extras = doc
allowlist_externals = make
commands =
make BUILDDIR={env_tmp_dir}/doc/build -C doc clean
make BUILDDIR={env_tmp_dir}/doc/build -C doc html
[testenv:misc]
description = Run other checks via pre-commit
base_python = py{39,310,311,312,38}
set_env =
SKIP = ruff-format,ruff
commands = pre-commit run --all-files