# Licensed 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=py27,py26,py27e2e,py26e2e,pywin,py27ssh,pylint_code,pylint_tests,docs
processes={env:PYTEST_PROCESSES:auto}

[testenv]
whitelist_externals=
  rm
passenv=
  TRAVIS
  PYTHON
  PYTHON_VERSION
  PYTHON_ARCH
deps=
  --requirement
    requirements.txt
  --requirement
    tests/requirements.txt
basepython=
  py26: python2.6
  py27: python2.7
  py26e2e: python2.6
  py27e2e: python2.7
  py26ssh: python2.6
  py27ssh: python2.7
  pywin: {env:PYTHON:}\python.exe
  pylint_code: python2.7
  pylint_tests: python2.7
  docs: python2.7

[testenv:py27]
commands=
  pytest tests \
    --numprocesses={[tox]processes} \
    --ignore=tests/end2end \
    --ignore=tests/orchestrator/execution_plugin/test_ssh.py \
    --cov-report term-missing \
    --cov aria

[testenv:py26]
commands=
  pytest tests \
    --numprocesses={[tox]processes} \
    --ignore=tests/end2end \
    --ignore=tests/orchestrator/execution_plugin/test_ssh.py \
    --cov-report term-missing \
    --cov aria

[testenv:py27e2e]
commands=
  pytest tests/end2end \
    --numprocesses={[tox]processes} \
    --cov-report term-missing \
    --cov aria

[testenv:py26e2e]
commands=
  pytest tests/end2end \
    --numprocesses={[tox]processes} \
    --cov-report term-missing \
    --cov aria

[testenv:pywin]
commands=
  pytest tests \
    --numprocesses={[tox]processes} \
    --ignore=tests/end2end \
    --ignore=tests/orchestrator/execution_plugin/test_ssh.py \
    --cov-report term-missing \
    --cov aria

[testenv:py27ssh]
install_command=
  pip install {opts} {packages} .[ssh]
commands=
  pytest tests/orchestrator/execution_plugin/test_ssh.py \
    --numprocesses={[tox]processes}

[testenv:py26ssh]
install_command=
  pip install {opts} {packages} .[ssh]
commands=
  pytest tests/orchestrator/execution_plugin/test_ssh.py \
  --numprocesses={[tox]processes}

[testenv:pylint_code]
commands=
  pylint aria extensions/aria_extension_tosca/ \
    --rcfile=aria/.pylintrc \
    --disable=fixme,missing-docstring

[testenv:pylint_tests]
commands=
  pylint tests \
    --rcfile=tests/.pylintrc \
    --disable=fixme,missing-docstring

[testenv:docs]
install_command=
  pip install {opts} {packages} \
    --requirement docs/requirements.txt
commands=
  rm --recursive --force docs/html
  sphinx-build -W -T -b html docs docs/html
