ssh-audit/tox.ini

140 lines
3.7 KiB
INI
Raw Permalink Normal View History

[tox]
envlist =
py{py3}-{test,pylint,flake8,vulture}
2023-11-28 05:35:40 +01:00
py{38,39,310,311,312}-{test,mypy,pylint,flake8,vulture}
2017-03-26 04:39:24 +02:00
cov
skip_missing_interpreters = true
[testenv]
deps =
2022-10-11 03:28:51 +02:00
test: pytest
2017-03-26 04:39:24 +02:00
test,cov: {[testenv:cov]deps}
2023-11-28 05:35:40 +01:00
test,py{38,39,310,311,312}-{type,mypy}: colorama
py{38,39,310,311,312}-{type,mypy}: {[testenv:mypy]deps}
py{py3,38,39,310,311,312}-{lint,pylint},lint: {[testenv:pylint]deps}
py{py3,38,39,310,311,312}-{lint,flake8},lint: {[testenv:flake8]deps}
py{py3,38,39,310,311,312}-{lint,vulture},lint: {[testenv:vulture]deps}
setenv =
SSHAUDIT = {toxinidir}/src
2017-03-26 04:39:24 +02:00
test: COVERAGE_FILE = {toxinidir}/.coverage.{envname}
type,mypy: MYPYPATH = {toxinidir}/test/stubs
2017-04-04 23:56:17 +02:00
type,mypy: MYPYHTML = {toxinidir}/reports/html/mypy
commands =
test: coverage run --source ssh_audit -m -p -- \
2017-04-04 23:56:17 +02:00
test: pytest -v --junitxml={toxinidir}/reports/junit.{envname}.xml {posargs:test}
test: coverage combine
2017-03-26 04:39:24 +02:00
test: coverage report --show-missing
2017-04-04 23:56:17 +02:00
test: coverage html -d {toxinidir}/reports/html/coverage.{envname}
2023-11-28 05:35:40 +01:00
py{38,39,310,311,312}-{type,mypy}: {[testenv:mypy]commands}
py{py3,38,39,310,311,312}-{lint,pylint},lint: {[testenv:pylint]commands}
py{py3,38,39,310,311,312}-{lint,flake8},lint: {[testenv:flake8]commands}
py{py3,38,39,310,311,312}-{lint,vulture},lint: {[testenv:vulture]commands}
#ignore_outcome =
# type: true
# lint: true
[testenv:cov]
deps =
Fix tox and finally make Travis green (#29) * Ignore all flake8 warnings - one by one Without ignoring, there are by far more than 1000 linting issues. Fixing these warnings means possibly changing almost every line of code, as single warnings can effect more than one line. Doing this in one pull request is generally no good idea, and especially not now, as the test suite is currently broken. Instead of just deactivating flake8, or ignoring its exit code, the warnings are ignored one by one. This means, when one wants to work on the linting issues, one can just remove one ignored warning, and fix the problems - which is not too much work at once, and leads to an managable diff. modified: tox.ini * Unpin dependencies for mypy run ... as they could not be installed due to compilation errors. modified: tox.ini * Fix syntax error for mypy When new code was added via https://github.com/jtesta/ssh-audit/commit/af663da83811ad7c40bcd5ca411ad27ceafbc134 the type hint was moved further down and so caused a syntax error, as type hints have to follow the function declaration directly. Now, the the type linter finally works and shows 187 errors. modified: ssh-audit.py * Update .gitignore for mypy modified: .gitignore * Let tox not fail on mypy errors Currently, there are almost 200 typing related errors. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way one can fix them one by one - if wanted. modified: tox.ini * Let tox not fail on pylint errors Currently, there are more than 100 linting related errors. Most of them will be fixed when flake8 gets fixed. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way, one can fix them one by one. modified: tox.ini * Let vulture only fail on 100% confidence Vulture is a tool to find dead code. Unlike Flake8, which also finds unused imports and variables, Vulture does some guess work and finally outputs a list of possible dead code with a confidence marker. Already the first result ... "ssh-audit.py:48: unused import 'Dict' (90% confidence)" ... is a false-positive. As Flake8 also does a good job in detecting unused code, it makes not much sense to let tox fail when vulture fails. Instead of deactivating vulture, it was configured in a way to only report results with 100% confidence. modified: tox.ini * Make timeout_set optional When timeout_set was introduced in https://github.com/jtesta/ssh-audit/commit/1ec13c653e5a465d14231f875ad42c23c347b400 the tests were not updated, which instantiated the Socket class. While the commit message read "A timeout can now be specified", the code enforced a `timeout_set`. `timeout_set` now is `False` by default. modified: ssh-audit.py * Set default values for Socket's `ipvo` and `timeout` Commit https://github.com/jtesta/ssh-audit/commit/f44663bfc4a7c70f9a61a8304fd6f16d945403d8 introduced two new arguments to the Socket class, but did not update the tests, which still relied on the socket class to only require two arguments. While for `ipvo`the default of `None` is obvious, as in `__init__` it is checked for it, for `timeout` it was not that obvious. Luckily, in the README a default of 5 (seconds) is mentioned. modified: ssh-audit.py * Un-comment exception handling While working on commit https://github.com/jtesta/ssh-audit/commit/fd3a1f7d4171636f79384bc8c74e1248d9c82a66 possibly it was forgotten to undo the commenting of the exception handling for the case, when the Socket class was instantiated with a missing `host` argument. This broke the `test_invalid_host` test. modified: ssh-audit.py * Skip `test_ssh2_server_simple` temporarily After fixing all the other tests and make tox run again, there is one failing test left, which unfortunately is not super easy to fix without further research (at least not for me). I marked `test_ssh2_server_simple` to be skipped in test runs (temporarily), so at least, when working on new features, there is working test suite, now. modified: test/test_ssh2.py * Do not pin pytest and coverage version ... but do use pytest < 6, as this version will have a breaking change with junit/Jenkins integration Also see https://github.com/jtesta/ssh-audit/issues/34 * Drop unsupported Python versions ... except Python 2.7, as this will need also changes to the source code, and this pull request is already big enough. Also, support for Python 3.8 was added. The Travis configuration was simplified a lot, by leveraging the tox configuration. Also, the mac builds have been dropped, as they all took almost an hour each, they failed and I have no experience on how to fix them. The `appveyor` build only has been updated to reflect the updated Python versions, as I have no access to the status page and no experience with this build environment. Also, removed call to `coveralls`, which seems to be a leftover from the old repository. modified: .appveyor.yml modified: .travis.yml modified: packages/setup.py deleted: test/tools/ci-linux.sh modified: tox.ini
2020-06-08 22:38:22 +02:00
coverage
setenv =
COVERAGE_FILE = {toxinidir}/.coverage
commands =
coverage erase
coverage combine
coverage report --show-missing
2017-04-04 23:56:17 +02:00
coverage xml -i -o {toxinidir}/reports/coverage.xml
coverage html -d {toxinidir}/reports/html/coverage
[testenv:mypy]
deps =
Fix tox and finally make Travis green (#29) * Ignore all flake8 warnings - one by one Without ignoring, there are by far more than 1000 linting issues. Fixing these warnings means possibly changing almost every line of code, as single warnings can effect more than one line. Doing this in one pull request is generally no good idea, and especially not now, as the test suite is currently broken. Instead of just deactivating flake8, or ignoring its exit code, the warnings are ignored one by one. This means, when one wants to work on the linting issues, one can just remove one ignored warning, and fix the problems - which is not too much work at once, and leads to an managable diff. modified: tox.ini * Unpin dependencies for mypy run ... as they could not be installed due to compilation errors. modified: tox.ini * Fix syntax error for mypy When new code was added via https://github.com/jtesta/ssh-audit/commit/af663da83811ad7c40bcd5ca411ad27ceafbc134 the type hint was moved further down and so caused a syntax error, as type hints have to follow the function declaration directly. Now, the the type linter finally works and shows 187 errors. modified: ssh-audit.py * Update .gitignore for mypy modified: .gitignore * Let tox not fail on mypy errors Currently, there are almost 200 typing related errors. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way one can fix them one by one - if wanted. modified: tox.ini * Let tox not fail on pylint errors Currently, there are more than 100 linting related errors. Most of them will be fixed when flake8 gets fixed. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way, one can fix them one by one. modified: tox.ini * Let vulture only fail on 100% confidence Vulture is a tool to find dead code. Unlike Flake8, which also finds unused imports and variables, Vulture does some guess work and finally outputs a list of possible dead code with a confidence marker. Already the first result ... "ssh-audit.py:48: unused import 'Dict' (90% confidence)" ... is a false-positive. As Flake8 also does a good job in detecting unused code, it makes not much sense to let tox fail when vulture fails. Instead of deactivating vulture, it was configured in a way to only report results with 100% confidence. modified: tox.ini * Make timeout_set optional When timeout_set was introduced in https://github.com/jtesta/ssh-audit/commit/1ec13c653e5a465d14231f875ad42c23c347b400 the tests were not updated, which instantiated the Socket class. While the commit message read "A timeout can now be specified", the code enforced a `timeout_set`. `timeout_set` now is `False` by default. modified: ssh-audit.py * Set default values for Socket's `ipvo` and `timeout` Commit https://github.com/jtesta/ssh-audit/commit/f44663bfc4a7c70f9a61a8304fd6f16d945403d8 introduced two new arguments to the Socket class, but did not update the tests, which still relied on the socket class to only require two arguments. While for `ipvo`the default of `None` is obvious, as in `__init__` it is checked for it, for `timeout` it was not that obvious. Luckily, in the README a default of 5 (seconds) is mentioned. modified: ssh-audit.py * Un-comment exception handling While working on commit https://github.com/jtesta/ssh-audit/commit/fd3a1f7d4171636f79384bc8c74e1248d9c82a66 possibly it was forgotten to undo the commenting of the exception handling for the case, when the Socket class was instantiated with a missing `host` argument. This broke the `test_invalid_host` test. modified: ssh-audit.py * Skip `test_ssh2_server_simple` temporarily After fixing all the other tests and make tox run again, there is one failing test left, which unfortunately is not super easy to fix without further research (at least not for me). I marked `test_ssh2_server_simple` to be skipped in test runs (temporarily), so at least, when working on new features, there is working test suite, now. modified: test/test_ssh2.py * Do not pin pytest and coverage version ... but do use pytest < 6, as this version will have a breaking change with junit/Jenkins integration Also see https://github.com/jtesta/ssh-audit/issues/34 * Drop unsupported Python versions ... except Python 2.7, as this will need also changes to the source code, and this pull request is already big enough. Also, support for Python 3.8 was added. The Travis configuration was simplified a lot, by leveraging the tox configuration. Also, the mac builds have been dropped, as they all took almost an hour each, they failed and I have no experience on how to fix them. The `appveyor` build only has been updated to reflect the updated Python versions, as I have no access to the status page and no experience with this build environment. Also, removed call to `coveralls`, which seems to be a leftover from the old repository. modified: .appveyor.yml modified: .travis.yml modified: packages/setup.py deleted: test/tools/ci-linux.sh modified: tox.ini
2020-06-08 22:38:22 +02:00
colorama
lxml
mypy
commands =
mypy \
--strict \
--show-error-context \
2017-03-26 04:39:24 +02:00
--html-report {env:MYPYHTML}.py3.{envname} \
{posargs:{env:SSHAUDIT}}
[testenv:pylint]
deps =
mccabe
pylint
commands =
pylint \
--rcfile tox.ini \
--load-plugins=pylint.extensions.bad_builtin \
--load-plugins=pylint.extensions.check_elif \
--load-plugins=pylint.extensions.mccabe \
{posargs:{env:SSHAUDIT}}
[testenv:flake8]
deps =
flake8
commands =
flake8 {posargs:{env:SSHAUDIT} {toxinidir}/setup.py {toxinidir}/test {toxinidir}/ssh-audit.py} --statistics
[testenv:vulture]
2017-03-26 04:39:24 +02:00
deps =
vulture
commands =
python -c "import sys; from subprocess import Popen, PIPE; \
Fix tox and finally make Travis green (#29) * Ignore all flake8 warnings - one by one Without ignoring, there are by far more than 1000 linting issues. Fixing these warnings means possibly changing almost every line of code, as single warnings can effect more than one line. Doing this in one pull request is generally no good idea, and especially not now, as the test suite is currently broken. Instead of just deactivating flake8, or ignoring its exit code, the warnings are ignored one by one. This means, when one wants to work on the linting issues, one can just remove one ignored warning, and fix the problems - which is not too much work at once, and leads to an managable diff. modified: tox.ini * Unpin dependencies for mypy run ... as they could not be installed due to compilation errors. modified: tox.ini * Fix syntax error for mypy When new code was added via https://github.com/jtesta/ssh-audit/commit/af663da83811ad7c40bcd5ca411ad27ceafbc134 the type hint was moved further down and so caused a syntax error, as type hints have to follow the function declaration directly. Now, the the type linter finally works and shows 187 errors. modified: ssh-audit.py * Update .gitignore for mypy modified: .gitignore * Let tox not fail on mypy errors Currently, there are almost 200 typing related errors. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way one can fix them one by one - if wanted. modified: tox.ini * Let tox not fail on pylint errors Currently, there are more than 100 linting related errors. Most of them will be fixed when flake8 gets fixed. Instead of letting the tox run fail, the errors are still shown, but the exit code gets ignored for now. This way, one can fix them one by one. modified: tox.ini * Let vulture only fail on 100% confidence Vulture is a tool to find dead code. Unlike Flake8, which also finds unused imports and variables, Vulture does some guess work and finally outputs a list of possible dead code with a confidence marker. Already the first result ... "ssh-audit.py:48: unused import 'Dict' (90% confidence)" ... is a false-positive. As Flake8 also does a good job in detecting unused code, it makes not much sense to let tox fail when vulture fails. Instead of deactivating vulture, it was configured in a way to only report results with 100% confidence. modified: tox.ini * Make timeout_set optional When timeout_set was introduced in https://github.com/jtesta/ssh-audit/commit/1ec13c653e5a465d14231f875ad42c23c347b400 the tests were not updated, which instantiated the Socket class. While the commit message read "A timeout can now be specified", the code enforced a `timeout_set`. `timeout_set` now is `False` by default. modified: ssh-audit.py * Set default values for Socket's `ipvo` and `timeout` Commit https://github.com/jtesta/ssh-audit/commit/f44663bfc4a7c70f9a61a8304fd6f16d945403d8 introduced two new arguments to the Socket class, but did not update the tests, which still relied on the socket class to only require two arguments. While for `ipvo`the default of `None` is obvious, as in `__init__` it is checked for it, for `timeout` it was not that obvious. Luckily, in the README a default of 5 (seconds) is mentioned. modified: ssh-audit.py * Un-comment exception handling While working on commit https://github.com/jtesta/ssh-audit/commit/fd3a1f7d4171636f79384bc8c74e1248d9c82a66 possibly it was forgotten to undo the commenting of the exception handling for the case, when the Socket class was instantiated with a missing `host` argument. This broke the `test_invalid_host` test. modified: ssh-audit.py * Skip `test_ssh2_server_simple` temporarily After fixing all the other tests and make tox run again, there is one failing test left, which unfortunately is not super easy to fix without further research (at least not for me). I marked `test_ssh2_server_simple` to be skipped in test runs (temporarily), so at least, when working on new features, there is working test suite, now. modified: test/test_ssh2.py * Do not pin pytest and coverage version ... but do use pytest < 6, as this version will have a breaking change with junit/Jenkins integration Also see https://github.com/jtesta/ssh-audit/issues/34 * Drop unsupported Python versions ... except Python 2.7, as this will need also changes to the source code, and this pull request is already big enough. Also, support for Python 3.8 was added. The Travis configuration was simplified a lot, by leveraging the tox configuration. Also, the mac builds have been dropped, as they all took almost an hour each, they failed and I have no experience on how to fix them. The `appveyor` build only has been updated to reflect the updated Python versions, as I have no access to the status page and no experience with this build environment. Also, removed call to `coveralls`, which seems to be a leftover from the old repository. modified: .appveyor.yml modified: .travis.yml modified: packages/setup.py deleted: test/tools/ci-linux.sh modified: tox.ini
2020-06-08 22:38:22 +02:00
a = ['vulture', '--min-confidence', '100'] + r'{posargs:{env:SSHAUDIT}}'.split(' '); \
o = Popen(a, shell=False, stdout=PIPE).communicate()[0]; \
2017-03-25 07:33:16 +01:00
l = [x for x in o.split(b'\n') if x and b'Unused import' not in x]; \
print(b'\n'.join(l).decode('utf-8')); \
sys.exit(1 if len(l) > 0 else 0)"
[pylint]
reports = no
#output-format = colorized
indent-string = " "
disable =
broad-except,
2020-10-11 20:41:58 +02:00
duplicate-code,
fixme,
invalid-name,
line-too-long,
missing-docstring,
2020-06-30 21:53:50 +02:00
no-else-raise,
no-else-return,
2020-10-15 21:04:16 +02:00
super-with-arguments, # Can be re-factored, at some point.
too-complex,
2020-06-30 21:53:50 +02:00
too-many-boolean-expressions,
too-many-branches,
too-many-instance-attributes,
too-many-lines,
too-many-locals,
2020-10-15 21:04:16 +02:00
too-many-statements,
2021-10-14 05:55:49 +02:00
consider-using-f-string
max-complexity = 15
max-args = 8
max-locals = 20
max-returns = 6
max-branches = 15
max-statements = 60
max-parents = 7
max-attributes = 8
min-public-methods = 1
max-public-methods = 20
max-bool-expr = 5
max-nested-blocks = 6
max-line-length = 80
2017-04-10 12:20:02 +02:00
ignore-long-lines = ^\s*(#\s+type:\s+.*|[A-Z0-9_]+\s+=\s+.*|('.*':\s+)?\[.*\],?|assert\s+.*)$
max-module-lines = 2500
[flake8]
# E241 = multiple spaces after operator; should be kept for tabular data
# E303 = too many blank lines
# E501 = line too long
ignore = E241, E303, E501
2020-06-30 21:53:50 +02:00
[pytest]
junit_family = xunit1
[coverage:paths]
source =
src
*/site-packages