; Copyright 2019-2024 Open Networking Foundation (ONF) and the ONF Contributors
;
; 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 = py36,py37,3.10.6
skip_missing_interpreters = true

[testenv]
deps =
  nose2

commands =
  nose2 -c tox.ini --verbose --junit-xml

[flake8]
max-line-length = 119

[unittest]
plugins=nose2.plugins.junitxml

[junit-xml]
path=nose2-results.xml

[coverage]
always-on = True
coverage =
  python
coverage-report =
  xml
  term

; [SEE ALSO]
; https://tox.wiki/en/latest/cli_interface.html
; https://docs.nose2.io/en/latest/usage.html

; [EOF]
