# Copyright 2018 Telefonica S.A.
#
# 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 = cover, flake8

[testenv]
usedevelop = True
basepython = python3
install_command = python3 -m pip install -r requirements.txt   -U {opts} {packages}

[testenv:cover]
basepython = python3
deps =
  nose2
  nose2-cov
  coverage
  -rrequirements.txt
  -rtest-requirements.txt
commands =
  coverage erase
  nose2 -C --coverage osm_nbi --plugin nose2.plugins.junitxml -s osm_nbi/tests
  coverage report --omit='*tests*'
  coverage html -d ./cover --omit='*tests*'
  coverage xml -o coverage.xml --omit='*tests*'

[testenv:flake8]
basepython = python3
deps =
  flake8
  -rrequirements.txt
commands =
  flake8 osm_nbi setup.py --max-line-length 120 \
    --exclude .svn,CVS,.gz,.git,__pycache__,.tox,local,temp,osm_im,.temp-tox --ignore W291,W293,E226,E402,W504

[testenv:build]
basepython = python3
deps = stdeb
       setuptools-version-command
commands = python3 setup.py --command-packages=stdeb.command bdist_deb

[testenv:unittest]
basepython = python3
deps = asynctest
       aioresponses
commands = python3 -m unittest discover osm_nbi/tests -v

