[tox]
envlist = py{37,38,39,310,311,312,313}-django{32,42,50,51,master},lint,docs,functional

[testenv]
passenv = *
setenv =
    PYTHONDONTWRITEBYTECODE=1
deps =
    -rrequirements/tests.txt
    django32: django>=3.2,<3.3
    django42: django>=4.2,<4.3
    django50: django>=5.0,<5.1
    django51: django>=5.1,<5.2
    djangomaster: https://github.com/django/django/archive/master.zip
commands = {posargs:coverage run runtests.py}

# Configure which test environments are run for each Github Actions Python version.
[gh-actions]
python =
    3.7: py37-django{32},functional
    3.8: py38-django{32,42},functional
    3.9: py39-django{32,42},functional
    3.10: py310-django{32,42,50,51},functional
    3.11: py311-django{42,50,51},functional
    3.12: py312-django{42,50,51},functional
    3.13: py313-django{51},functional

[testenv:lint]
basepython = python
deps =
    prospector
commands = prospector dbbackup -0

[testenv:docs]
basepython = python
allowlist_externals=make
deps = -rrequirements/docs.txt
commands = make docs

[testenv:functional]
basepython = python
passenv = *
allowlist_externals = bash
deps =
    -rrequirements/tests.txt
    django
    mysqlclient
    psycopg2
commands = {posargs:bash -x functional.sh}


[testenv:functional-mongodb]
basepython = python
passenv = *
allowlist_externals = bash
deps =
    -rrequirements/tests.txt
    djongo
commands = {posargs:bash -x functional.sh}

[flake8]
include = dbbackup
exclude = tests, settings, venv, docs
ignore = E501, E203, W503