summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHervé Beraud <hberaud@redhat.com>2020-07-21 13:30:43 +0200
committerHervé Beraud <hberaud@redhat.com>2020-09-22 12:32:18 +0200
commit80190b395c12aca192f013b076831f3687ccd5a3 (patch)
treef5de6957087d41b638024faab46f4818baa3e21f
parent83471a11cc2969617cc08279d0221434a439e5c7 (diff)
downloadoslo-db-80190b395c12aca192f013b076831f3687ccd5a3.tar.gz
Adding pre-commit
Introduced changes: - pre-commit config and rules - Add pre-commit to pep8 gate, Flake8 is covered in the pre-commit hooks. - Applying fixes for pre-commit compliance in all code. Also commit hash will be used instead of version tags in pre-commit to prevend arbitrary code from running in developer's machines. pre-commit will be used to: - trailing whitespace; - Replaces or checks mixed line ending (mixed-line-ending); - Forbid files which have a UTF-8 byte-order marker (check-byte-order-marker); - Checks that non-binary executables have a proper shebang (check-executables-have-shebangs); - Check for files that contain merge conflict strings (check-merge-conflict); - Check for debugger imports and py37+ breakpoint() calls in python source (debug-statements); - Attempts to load all yaml files to verify syntax (check-yaml); - Run flake8 checks (flake8) (local) For further details about tests please refer to: https://github.com/pre-commit/pre-commit-hooks Change-Id: Id03c1ea4752db3236c36521ca9c67125d5ba2526 Co-authored-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
-rw-r--r--.pre-commit-config.yaml35
-rw-r--r--[-rwxr-xr-x]doc/source/conf.py20
-rw-r--r--test-requirements.txt1
-rw-r--r--tox.ini2
4 files changed, 48 insertions, 10 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..9d94556
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,35 @@
+# We from the Oslo project decided to pin repos based on the
+# commit hash instead of the version tag to prevend arbitrary
+# code from running in developer's machines. To update to a
+# newer version, run `pre-commit autoupdate` and then replace
+# the newer versions with their commit hash.
+
+default_language_version:
+ python: python3
+
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: ebc15addedad713c86ef18ae9632c88e187dd0af # 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://gitlab.com/pycqa/flake8
+ rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3
+ hooks:
+ - id: flake8
+ additional_dependencies:
+ - hacking>=3.0.1,<3.1.0
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 9b867dc..7006f0d 100755..100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -1,15 +1,17 @@
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
# -- General configuration ----------------------------------------------------
diff --git a/test-requirements.txt b/test-requirements.txt
index ba3fbc1..4388b76 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -14,3 +14,4 @@ bandit>=1.6.0,<1.7.0 # Apache-2.0
pifpaf>=0.10.0 # Apache-2.0
PyMySQL>=0.7.6 # MIT License
psycopg2>=2.8.0 # LGPL/ZPL
+pre-commit>=2.6.0 # MIT
diff --git a/tox.ini b/tox.ini
index d5512d4..1a19e22 100644
--- a/tox.ini
+++ b/tox.ini
@@ -24,7 +24,7 @@ commands =
[testenv:pep8]
commands =
- flake8
+ pre-commit run -a
# Run security linter
bandit -r oslo_db -x tests -n5 --skip B105,B311