
[tox]
envlist =
        py{39,310,311}-django42,
        py{310,311,312}-django{50,51},
        py{312,313}-django52,
        py{39,310}-django42-jinja2,
        py{310,311}-django{42,50}-jinja2,
        py312-django{50,51}-jinja2,
        py313-django52
        py313-django52-drf
        gettext,flake8,docs,coverage

[gh-actions]
python =
  3.13: py313-django52, py313-django52-drf
  3.12: py312-django50, py312-django51, py312-django52, py312-django51-jinja2
  3.11: p311-django-51, p311-django-50, p311-django-50-jinjia, p311-django-42, p311-django-42-jinjia
  3.10: py310-django42, py310-django42-jinja2, py310-django50, py310-django51, py310-django50-jinja2
  3.9: py39-django42, py39-django42-jinja2

[testenv]
changedir = testproject
commands =
        python -Wd manage.py test captcha

setenv =
        PYTHONDONTWRITEBYTECODE=1

deps =
        django42: Django>=4.2a,<4.3
        django50: Django>=5.0a,<5.1
        django51: Django>=5.1,<5.2
        django52: Django>=5.2a1,<5.3
        py{39,310,311,312, 313}-django{42,50,51,52}: python3-memcached
        py313-django52-drf: djangorestframework
        jinja2
        Pillow

extras =
        test


[testenv:py39-django42-jinja2]
commands = python -Wd manage.py test captcha --settings jinja2_settings

[testenv:py310-django42-jinja2]
commands = python -Wd manage.py test captcha --settings jinja2_settings

[testenv:py310-django50-jinja2]
commands = python -Wd manage.py test captcha --settings jinja2_settings

[testenv:py311-django50-jinja2]
commands = python -Wd manage.py test captcha --settings jinja2_settings

[testenv:py312-django50-jinja2]
commands = python -Wd manage.py test captcha --settings jinja2_settings

[testenv:py313-django52-drf]
commands = python -Wd manage.py test captcha --settings drf_settings


[testenv:gettext]
basepython = python3.12
changedir = captcha/locale/
allowlist_externals =
      msgfmt

commands =
      msgfmt -c -o bg/LC_MESSAGES/django.mo bg/LC_MESSAGES/django.po
      msgfmt -c -o cs/LC_MESSAGES/django.mo cs/LC_MESSAGES/django.po
      msgfmt -c -o de/LC_MESSAGES/django.mo de/LC_MESSAGES/django.po
      msgfmt -c -o en/LC_MESSAGES/django.mo en/LC_MESSAGES/django.po
      msgfmt -c -o es/LC_MESSAGES/django.mo es/LC_MESSAGES/django.po
      msgfmt -c -o fa/LC_MESSAGES/django.mo fa/LC_MESSAGES/django.po
      msgfmt -c -o fr/LC_MESSAGES/django.mo fr/LC_MESSAGES/django.po
      msgfmt -c -o it/LC_MESSAGES/django.mo it/LC_MESSAGES/django.po
      msgfmt -c -o ja/LC_MESSAGES/django.mo ja/LC_MESSAGES/django.po
      msgfmt -c -o nl/LC_MESSAGES/django.mo nl/LC_MESSAGES/django.po
      msgfmt -c -o pl/LC_MESSAGES/django.mo pl/LC_MESSAGES/django.po
      msgfmt -c -o pt_BR/LC_MESSAGES/django.mo pt_BR/LC_MESSAGES/django.po
      msgfmt -c -o ru/LC_MESSAGES/django.mo ru/LC_MESSAGES/django.po
      msgfmt -c -o sk/LC_MESSAGES/django.mo sk/LC_MESSAGES/django.po
      msgfmt -c -o sv/LC_MESSAGES/django.mo sv/LC_MESSAGES/django.po
      msgfmt -c -o tr/LC_MESSAGES/django.mo tr/LC_MESSAGES/django.po
      msgfmt -c -o uk/LC_MESSAGES/django.mo uk/LC_MESSAGES/django.po
      msgfmt -c -o zh_CN/LC_MESSAGES/django.mo zh_CN/LC_MESSAGES/django.po
      msgfmt -c -o zh_Hans/LC_MESSAGES/django.mo zh_Hans/LC_MESSAGES/django.po

[testenv:flake8]
basepython = python3.12
deps = flake8
commands=
    flake8 {toxinidir}/captcha

[testenv:docs]
basepython = python3.12
deps =
        sphinx
        sphinx-book-theme

changedir = docs
commands=
        sphinx-build -b html . _build/html


[testenv:coverage]
changedir = testproject

passenv =
        CAPTCHA_FLITE_PATH
        CAPTCHA_SOX_PATH
deps =
        coverage
        djangorestframework

commands=
        # coverage debug config
        coverage run --rcfile=.coveragerc manage.py test captcha  --settings drf_settings
        coverage report --rcfile=.coveragerc
