[tox]
minversion = 4
envlist =
  black
  flake8
  mypy
  py3

[testenv]
usedevelop = true
extras =
  testing
  django
  starlette
deps =
  pytest-cov
commands =
  pytest --doctest-modules \
         --cov=swh/auth \
         --cov-branch \
         swh/auth \
         {posargs}

[testenv:black]
skip_install = true
deps =
  black==25.1.0
commands =
  {envpython} -m black --check swh

[testenv:flake8]
skip_install = true
deps =
  flake8==7.1.1
  flake8-bugbear==24.12.12
  flake8-pyproject==1.2.3
  pycodestyle==2.12.1

commands =
  {envpython} -m flake8

[testenv:mypy]
extras =
  testing
deps =
  mypy==1.15.0
commands =
  mypy swh

# build documentation outside swh-environment using the current
# git HEAD of swh-docs, is executed on CI for each diff to prevent
# breaking doc build
[testenv:sphinx]
allowlist_externals = make
extras =
  testing
deps =
  # fetch and install swh-docs
  git+https://gitlab.softwareheritage.org/swh/devel/swh-docs.git\#egg=swh.docs
setenv =
  SWH_PACKAGE_DOC_TOX_BUILD = 1
  # turn warnings into errors
  SPHINXOPTS = -W
commands =
  make -I {env_dir}/share/swh-docs -C docs