# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[tox]
envlist = py36,py37,py38,linters

[testenv]
deps =
    coverage
    mock
    nose
    pytest
setenv =
    COVERAGE_FILE = test-reports/{envname}/.coverage
    PYTEST_ADDOPTS = --junitxml=test-reports/{envname}/junit.xml -vv
commands =
    coverage run --source iceberg --parallel-mode -m pytest {posargs}
    coverage combine
    coverage report -m
    coverage html -d test-reports/{envname}/coverage-html
    coverage xml -o test-reports/{envname}/coverage.xml

[testenv:linters]
basepython = python3
skip_install = true
deps =
    .
    {[testenv:flake8]deps}
    {[testenv:bandit]deps}
    {[testenv:mypy]deps}
commands =
    {[testenv:flake8]commands}
    {[testenv:bandit]commands}
    {[testenv:mypy]commands}

[testenv:flake8]
basepython = python3
skip_install = true
deps =
    flake8
    flake8-import-order>=0.9
    flake8-bugbear
commands =
    flake8 iceberg setup.py tests

[testenv:mypy]
basepython = python3
skip_install = true
deps =
    mypy
commands =
    mypy --ignore-missing-imports iceberg/

[testenv:bandit]
basepython = python3
skip_install = true
deps =
    bandit
commands =
    bandit --ini tox.ini -r iceberg

# [testenv:docs]
# basepython = python3
# deps =
#     -r docs/source/requirements.txt
# commands =
#     sphinx-build -E -W -c docs/source/ -b html docs/source/ docs/build/html
#     sphinx-build -E -W -c docs/source/ -b man docs/source/ docs/build/man

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

[flake8]
ignore = E501,W503
exclude =
    *.egg-info,
    *.pyc,
    .cache,
    .coverage.*,
    .gradle,
    .tox,
    build,
    dist,
    htmlcov.*
max-complexity = 10
import-order-style = google
application-import-names = flake8

[pytest]
norecursedirs=.*

[gh-actions]
python =
  3.6: py36, linters
  3.7: py37
  3.8: py38
