[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