Improve GHA test jobs, move tool config to pyproject.toml (#202)

* Move Tox tool config settings to pyproject.toml
* Restore older Bandit version for predictive setup
   Bandit UX is seriously broken. Unfortunately, only <1.6 works predictably.
* Exclude unsupported Python/Django combinations
   Use a more self-explanatory build job name for tests
* Help pytest find the Django test project settings
* Use clean range for Django 4.0
* Keep load on the GHA runners low, use newer Python for checks
This commit is contained in:
Peter Bittner 2022-02-04 19:04:03 +01:00 committed by GitHub
parent 051d46ceda
commit a021e07e15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 49 additions and 29 deletions

View file

@ -1 +0,0 @@
tox.ini

View file

@ -18,7 +18,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: '3.8'
- name: Get pip cache dir
id: pip-cache

View file

@ -9,7 +9,7 @@ on:
- master
jobs:
build:
python-django:
runs-on: ubuntu-latest
strategy:
max-parallel: 5
@ -24,6 +24,10 @@ jobs:
- '2.2'
- '3.2'
- '4.0'
exclude:
- { django-version: '2.2', python-version: '3.10' }
- { django-version: '4.0', python-version: '3.6' }
- { django-version: '4.0', python-version: '3.7' }
steps:
- uses: actions/checkout@v2

1
.gitignore vendored
View file

@ -4,6 +4,7 @@
/.tox
/.coverage
/coverage.xml
/tests/reports
/build
/dist

19
pyproject.toml Normal file
View file

@ -0,0 +1,19 @@
[tool.bandit]
# Exclude/ignore of files is currently broken in Bandit.
[tool.black]
color = true
[tool.coverage.xml]
output = "tests/reports/coverage.xml"
[tool.isort]
color_output = true
profile = "black"
[tool.pylint.master]
output-format = "colorized"
[tool.pytest.ini_options]
addopts = "--junitxml=tests/reports/unittests.xml --color=yes --verbose"
DJANGO_SETTINGS_MODULE = "tests.testproject.settings"

49
tox.ini
View file

@ -17,48 +17,32 @@ deps =
pytest-django
django22: Django>=2.2,<3.0
django32: Django>=3.2,<4.0
django40: Django>=4.0a1,<4.1
django40: Django>=4.0,<4.1
commands =
coverage run -m pytest
coverage xml
[gh-actions]
python =
3.6: py36
3.7: py37
3.8: py38
3.9: py39
3.10: py310
[gh-actions:env]
DJANGO =
2.2: django22
3.2: django32
4.0: django40
[testenv:bandit]
description = PyCQA security linter
deps = bandit<1.6
commands = - bandit -r --ini tox.ini
ignore_errors = true
commands = -bandit --ini tox.ini {posargs:-r .}
[testenv:docs]
description = Build the HTML documentation
deps = sphinx
commands = sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html
whitelist_externals = make
allowlist_externals = make
[testenv:flake8]
description = Static code analysis and code style
deps = flake8
commands = flake8
commands = flake8 {posargs}
[testenv:isort]
description = Ensure imports are ordered
description = Ensure imports are ordered consistently
deps = isort[colors]
commands = isort --check-only --diff {posargs:analytical setup.py tests}
skip_install = True
deps = isort
commands = isort tests setup.py analytical --check --diff
[testenv:readme]
description = Ensure README renders on PyPI
@ -73,13 +57,26 @@ deps = pyclean
commands =
pyclean -v {toxinidir}
rm -rf .tox/ build/ dist/ django_analytical.egg-info/ .coverage coverage.xml
whitelist_externals =
allowlist_externals =
rm
[bandit]
exclude = .cache,.git,.tox,build,dist,docs,tests
targets = .
exclude = .git,.github,.tox,build,dist,docs,tests
[flake8]
exclude = .cache,.git,.tox,build,dist
max-line-length = 100
[gh-actions]
python =
3.6: py36
3.7: py37
3.8: py38
3.9: py39
3.10: py310
[gh-actions:env]
DJANGO =
2.2: django22
3.2: django32
4.0: django40