[tox]
envlist = linters,docs,unit-tests

[testenv:unit-tests]
basepython = python3
# {posargs} contains additional arguments specified when invoking tox. e.g. tox -- -s -k test_foo.py
commands =
    pytest {posargs} --cov-report term-missing --cov-report html --cov-report xml --cov=braket
extras = test

[testenv:linters]
basepython = python3
skip_install = true
deps =
    {[testenv:isort]deps}
    {[testenv:black]deps}
    {[testenv:flake8]deps}
commands =
    # isort MUST come before black as it will revert any changes made by black
    {[testenv:isort]commands}
    {[testenv:black]commands}
    {[testenv:flake8]commands}

[testenv:flake8]
basepython = python3
skip_install = true
deps =
    flake8
    flake8-rst-docstrings
commands =
    flake8 {posargs}

[testenv:isort]
basepython = python3
skip_install = true
deps =
    isort
commands =
    isort -rc . {posargs}

[testenv:black]
basepython = python3
skip_install = true
deps =
    black
commands =
    black ./ {posargs}

[testenv:docs]
basepython = python3
deps =
    sphinx
    sphinx-rtd-theme
    sphinxcontrib-apidoc
commands =
    sphinx-build -E -T -b html doc build/documentation/html

[testenv:serve-docs]
basepython = python3
skip_install = true
changedir = build/documentation/html
commands =
    python -m http.server {posargs}

[testenv:zip-build]
basepython = python3
skip_install = true
commands =
    /bin/sh -c 'tar -czvf build_files.tar.gz build/'