cedadccc6f
The repo is Python 3 now, so update hacking to version 3.0 which supports Python 3. Fix problems found. Update local hacking checks for new flake8. Change-Id: I6396403d0a62f5403fc5b7fb04b6ce790c332c84
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
# Copyright 2017 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
|
|
|
|
from hacking import core
|
|
|
|
assert_no_xrange_re = re.compile(r"\s*xrange\s*\(")
|
|
assert_True = re.compile(r".*assertEqual\(True, .*\)")
|
|
assert_None = re.compile(r".*assertEqual\(None, .*\)")
|
|
assert_Not_Equal = re.compile(r".*assertNotEqual\(None, .*\)")
|
|
assert_Is_Not = re.compile(r".*assertIsNot\(None, .*\)")
|
|
assert_raises_regexp = re.compile(r"assertRaisesRegexp\(")
|
|
no_log_warn = re.compile(r".*LOG.warn\(.*\)")
|
|
mutable_default_args = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
|
|
|
|
|
|
@core.flake8ext
|
|
def no_mutable_default_args(logical_line):
|
|
msg = "M001: Method's default argument shouldn't be mutable!"
|
|
if mutable_default_args.match(logical_line):
|
|
yield (0, msg)
|
|
|
|
|
|
@core.flake8ext
|
|
def no_xrange(logical_line):
|
|
if assert_no_xrange_re.match(logical_line):
|
|
yield (0, "M002: Do not use xrange().")
|
|
|
|
|
|
@core.flake8ext
|
|
def validate_assertTrue(logical_line):
|
|
if re.match(assert_True, logical_line):
|
|
msg = ("M003: Unit tests should use assertTrue(value) instead"
|
|
" of using assertEqual(True, value).")
|
|
yield (0, msg)
|
|
|
|
|
|
@core.flake8ext
|
|
def validate_assertIsNone(logical_line):
|
|
if re.match(assert_None, logical_line):
|
|
msg = ("M004: Unit tests should use assertIsNone(value) instead"
|
|
" of using assertEqual(None, value).")
|
|
yield (0, msg)
|
|
|
|
|
|
@core.flake8ext
|
|
def no_log_warn_check(logical_line):
|
|
if re.match(no_log_warn, logical_line):
|
|
msg = ("M005: LOG.warn is deprecated, please use LOG.warning!")
|
|
yield (0, msg)
|
|
|
|
|
|
@core.flake8ext
|
|
def validate_assertIsNotNone(logical_line):
|
|
if re.match(assert_Not_Equal, logical_line) or \
|
|
re.match(assert_Is_Not, logical_line):
|
|
msg = ("M006: Unit tests should use assertIsNotNone(value) instead"
|
|
" of using assertNotEqual(None, value) or"
|
|
" assertIsNot(None, value).")
|
|
yield (0, msg)
|
|
|
|
|
|
@core.flake8ext
|
|
def assert_raisesRegexp(logical_line):
|
|
res = assert_raises_regexp.search(logical_line)
|
|
if res:
|
|
yield (0, "M007: assertRaisesRegex must be used instead "
|
|
"of assertRaisesRegexp")
|