[tox]
envlist = py36, coverage, flake8, pylint

[testenv]
deps =
    pytest
    coverage
    ufo2ft
commands = coverage run -m pytest {posargs}
passenv = LD_LIBRARY_PATH LD_PRELOAD

[testenv:coverage]
deps = coverage
skip_install = true
commands =
    coverage combine
    coverage report
    coverage html

# Exclude a lot of tests here without turning them off in setup.cfg, because a
# developer might want to see and fix them. This is more of a regression test.
[testenv:flake8]
deps = flake8
test_list = E901,E999,F821,F822,F823
commands = flake8 --count --select={[testenv:flake8]test_list} --show-source --statistics Lib

# Same rationale as with flake8.
[testenv:pylint]
deps = pylint
wont_fix = invalid-name,bad-indentation,inconsistent-return-statements,too-many-return-statements,too-many-public-methods
maybe_someday = fixme,missing-docstring,too-many-locals,too-many-branches,too-many-statements,bad-continuation,unidiomatic-typecheck,logging-format-interpolation,too-many-nested-blocks,superfluous-parens,bare-except,undefined-loop-variable,too-many-instance-attributes,old-style-class,unnecessary-pass,unused-argument,consider-iterating-dictionary,attribute-defined-outside-init,too-many-boolean-expressions,too-many-arguments,wrong-import-order,bad-whitespace,pointless-string-statement,pointless-statement,redefined-builtin,global-statement,too-many-lines,global-variable-undefined,redefined-variable-type,multiple-statements,expression-not-assigned,too-many-format-args,deprecated-lambda,broad-except,no-self-use,no-name-in-module,abstract-method,no-member,line-too-long,trailing-newlines,duplicate-code,redefined-outer-name,trailing-whitespace,unused-variable,logging-not-lazy,undefined-variable,protected-access,anomalous-backslash-in-string,wrong-import-position,ungrouped-imports,singleton-comparison,misplaced-comparison-constant,consider-using-enumerate,used-before-assignment,too-few-public-methods,dangerous-default-value,unexpected-keyword-arg,len-as-condition,no-else-return,relative-import,not-callable,unsupported-membership-test,keyword-arg-before-vararg,consider-using-ternary,useless-return,chained-comparison,consider-using-in,useless-object-inheritance,no-else-raise
commands = pylint --disable={[testenv:pylint]wont_fix},{[testenv:pylint]maybe_someday} Lib/fontbakery
