summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-07-23 15:31:02 +0000
committerGerrit Code Review <review@openstack.org>2018-07-23 15:31:02 +0000
commit7651b81fa03a33482b8ccb372ab631d81fc47305 (patch)
tree42101ebedfdbc3fa332d0a98b84be7e2018a7f10
parentc1f672e4ea907f9a5a8ad04bc049f17c73d26dd2 (diff)
parent7cc01cd3b1c008604c8b27edbb3207cd68e08a59 (diff)
downloadironic-7651b81fa03a33482b8ccb372ab631d81fc47305.tar.gz
Merge "Improve pep8 checking along with hacking"
-rw-r--r--ironic/drivers/modules/storage/external.py1
-rw-r--r--ironic/hacking/__init__.py0
-rw-r--r--ironic/hacking/checks.py55
-rw-r--r--tox.ini1
4 files changed, 57 insertions, 0 deletions
diff --git a/ironic/drivers/modules/storage/external.py b/ironic/drivers/modules/storage/external.py
index ad7d7e6da..87128c1f7 100644
--- a/ironic/drivers/modules/storage/external.py
+++ b/ironic/drivers/modules/storage/external.py
@@ -14,6 +14,7 @@ from oslo_config import cfg
from oslo_log import log
from ironic.common import exception
+from ironic.common.i18n import _
from ironic.drivers import base
CONF = cfg.CONF
diff --git a/ironic/hacking/__init__.py b/ironic/hacking/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ironic/hacking/__init__.py
diff --git a/ironic/hacking/checks.py b/ironic/hacking/checks.py
new file mode 100644
index 000000000..3cdd4c07f
--- /dev/null
+++ b/ironic/hacking/checks.py
@@ -0,0 +1,55 @@
+# Copyright 2018 FUJITSU LIMITED
+#
+# 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.
+
+import re
+
+# D703: Found use of _() without explicit import of _!
+
+
+UNDERSCORE_IMPORT_FILES = []
+
+
+string_translation = re.compile(r"[^_]*_\(\s*('|\")")
+translated_log = re.compile(
+ r"(.)*LOG\.(audit|error|info|warn|warning|critical|exception)"
+ "\(\s*_\(\s*('|\")")
+underscore_import_check = re.compile(r"(.)*import _(.)*")
+# We need this for cases where they have created their own _ function.
+custom_underscore_check = re.compile(r"(.)*_\s*=\s*(.)*")
+
+
+def check_explicit_underscore_import(logical_line, filename):
+ """Check for explicit import of the _ function
+
+ We need to ensure that any files that are using the _() function
+ to translate logs are explicitly importing the _ function. We
+ can't trust unit test to catch whether the import has been
+ added so we need to check for it here.
+
+ """
+
+ # Build a list of the files that have _ imported. No further
+ # checking needed once it is found.
+ if filename in UNDERSCORE_IMPORT_FILES:
+ pass
+ elif (underscore_import_check.match(logical_line) or
+ custom_underscore_check.match(logical_line)):
+ UNDERSCORE_IMPORT_FILES.append(filename)
+ elif (translated_log.match(logical_line) or
+ string_translation.match(logical_line)):
+ yield(0, "D703: Found use of _() without explicit import of _!")
+
+
+def factory(register):
+ register(check_explicit_underscore_import)
diff --git a/tox.ini b/tox.ini
index 98724bd91..d70a88f89 100644
--- a/tox.ini
+++ b/tox.ini
@@ -138,6 +138,7 @@ max-complexity=18
enable-extensions=H106,H203,H204,H205,H904
[hacking]
+local-check-factory = ironic.hacking.checks.factory
import_exceptions = testtools.matchers, ironic.common.i18n
[testenv:lower-constraints]