Introducing usage of pre-commit

The main goal is to use oslo.cache to design pre-commit for oslo.* and
then spread its use widely on oslo's world.

pre-commit will be used to:
- trailing whitespace [2].
- Replaces or checks mixed line ending (mixed-line-ending) [2].
- Forbid files which have a UTF-8 byte-order
  marker (check-byte-order-marker) [2].
- Checks that non-binary executables have a proper
  shebang (check-executables-have-shebangs) [2].
- Check for files that contain merge conflict
  strings (check-merge-conflict) [2].
- Check for debugger imports and py37+ breakpoint()
  calls in python source (debug-statements) [2].
- Attempts to load all yaml files to verify syntax (check-yaml) [2].
- replace tabs by space (4 by default)(remove-tabs) [3].
- Run flake8 checks (flake8) (local)

[1] https://specs.openstack.org/openstack/oslo-specs/specs/policy/contributing.html
[2] https://github.com/pre-commit/pre-commit-hooks
[3] https://github.com/Lucas-C/pre-commit-hooks

Change-Id: I9170cc31b91f8f25d66ff1b8537c55aced672785
Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
This commit is contained in:
Hervé Beraud 2020-07-07 11:33:55 +02:00 committed by Moisés Guimarães de Medeiros
parent 18e76738e7
commit 78edaf53c6
2 changed files with 41 additions and 0 deletions

35
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,35 @@
---
default_language_version:
# force all unspecified python hooks to run python3
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.1.0
hooks:
- id: trailing-whitespace
# Replaces or checks mixed line ending
- id: mixed-line-ending
args: ['--fix', 'lf']
exclude: '.*\.(svg)$'
# Forbid files which have a UTF-8 byte-order marker
- id: check-byte-order-marker
# Checks that non-binary executables have a proper shebang
- id: check-executables-have-shebangs
# Check for files that contain merge conflict strings.
- id: check-merge-conflict
# Check for debugger imports and py37+ breakpoint()
# calls in python source
- id: debug-statements
- id: check-yaml
files: .*\.(yaml|yml)$
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.1.7
hooks:
- id: remove-tabs
exclude: '.*\.(svg)$'
- repo: https://gitlab.com/pycqa/flake8
rev: 3.8.3
hooks:
- id: flake8
additional_dependencies:
- hacking>=3.0.1,<3.1.0

View File

@ -28,6 +28,12 @@ commands =
# Run security linter
bandit -r oslo_cache -x tests -n5
[testenv:pre-commit]
deps =
pre-commit
commands =
pre-commit run --from-ref HEAD^ --to-ref HEAD
[testenv:venv]
commands = {posargs}