[tox]
requires = virtualenv<20.22.0
envlist = reset,py{27,27-portable,35,36,38,39,310},stats
skip_missing_interpreters = true

[testenv]
setenv =
    BITMESSAGE_HOME = {envtmpdir}
    HOME = {envtmpdir}
    PYTHONWARNINGS = default
deps = -rrequirements.txt
commands =
    python checkdeps.py
    python src/bitmessagemain.py -t
    coverage run -a -m tests

[testenv:lint-basic]
skip_install = true
basepython = python3
deps =
    bandit
    flake8
commands =
    bandit -r -s B101,B411,B413,B608 \
    -x checkdeps.*,bitmessagecurses,bitmessageqt,tests pybitmessage
    flake8 pybitmessage --count --select=E9,F63,F7,F82 \
    --show-source --statistics

[testenv:lint]
skip_install = true
basepython = python3
deps =
     -rrequirements.txt
     pylint
commands = pylint --rcfile=tox.ini --exit-zero pybitmessage

[testenv:py27]
sitepackages = true

[testenv:py27-doc]
deps =
    .[docs]
    -r docs/requirements.txt
commands = python setup.py build_sphinx

[testenv:py27-portable]
skip_install = true
commands = python pybitmessage/bitmessagemain.py -t

[testenv:py35]
skip_install = true

[testenv:reset]
skip_install = true
deps = coverage
commands = coverage erase

[testenv:stats]
skip_install = true
deps = coverage
commands =
    coverage report
    coverage xml

[coverage:run]
source = src
omit =
    tests.py
    */tests/*
    src/bitmessagekivy/*
    src/version.py
    src/fallback/umsgpack/*

[coverage:report]
ignore_errors = true

[pylint.main]
disable =
    invalid-name,consider-using-f-string,fixme,raise-missing-from,
    super-with-arguments,unnecessary-pass,unknown-option-value,
    unspecified-encoding,useless-object-inheritance,useless-option-value
ignore = bitmessagecurses,bitmessagekivy,bitmessageqt,messagetypes,mockbm,
    network,plugins,umsgpack,bitmessagecli.py

max-args = 8
max-attributes = 8