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

[testenv]
usedevelop = true
extras =
  testing
deps =
  pytest-cov
  pytest-xdist
commands =
  pytest \
         -n auto \
         --cov=swh/web \
         --cov-branch \
  slow:  --hypothesis-profile=swh-web \
  !slow: --hypothesis-profile=swh-web-fast \
         swh/web \
         {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 \
    --exclude=.tox,.git,__pycache__,.eggs,*.egg,node_modules

[testenv:mypy]
setenv = DJANGO_SETTINGS_MODULE = swh.web.settings.development
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
