; Copyright 2017 the original author or authors.
;
; 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 = py35,py36
skip_missing_interpreters = true

[testenv]
commands =
    nosetests -c tox.ini

deps =
   nose
   mock
   coverage
   -rrequirements.txt

[nosetests]
with-xunit=1
xunit-file=nose-results.xml
with-coverage=1
cover-xml=1
cover-xml-file=coverage.xml
cover-package=pyvoltha
