# Copyright 2017 Intel Research and Development Ireland Limited
# *************************************************************

# This file is part of OSM Monitoring module
# All Rights Reserved to Intel Corporation

# 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.

# For those usages not covered by the Apache License, Version 2.0 please
# contact: helena.mcgough@intel.com or adrian.hoban@intel.com
##

# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
envlist = cover, py3, flake8


[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
setenv = VIRTUAL_ENV={envdir}
         PYTHONDONTWRITEBYTECODE = 1
         TESTS_DIR=./osm_mon/tests/unit/
deps = -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
commands =
    coverage erase

[testenv:cover]
basepython = python3
deps = nose2
       -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
commands =
  coverage erase
  nose2 -C --coverage osm_mon --plugin nose2.plugins.junitxml
  coverage report --omit='*tests*'
  coverage html -d ./cover --omit='*tests*'
  coverage xml -o coverage.xml --omit='*tests*'

[testenv:flake8]
basepython = python3
deps = flake8
       -r{toxinidir}/requirements.txt
commands =
    flake8 osm_mon

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

[flake8]
# E123, E125 skipped as they are invalid PEP-8.
max-line-length = 120
show-source = True
ignore = E123,E125,E241,W503
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,devops_stages/*,.rst
