Remove duplicate hacking checks

Some of the checks in local plugin are duplicate of built-in ones.

 [H203] Use assertIs(Not)None to check for None
 [H211] Check for assertTrue(isinstance(a, b)) sentences
 [H214] Use assertIn/NotIn(A, B)

Note:
H211 and H214 are enabled by default.

Change-Id: I05bfccf5be72ba608f44263b4b2f1bf995da908c
This commit is contained in:
Takashi Kajinami
2024-11-27 11:53:30 +09:00
parent 6dd8a432f7
commit c12baba2cd
3 changed files with 0 additions and 126 deletions

View File

@@ -41,24 +41,11 @@ _log_translation_hint = re.compile(
'hints': '|'.join(_all_hints),
})
assert_trueinst_re = re.compile(
r"(.)*assertTrue\(isinstance\((\w|\.|\'|\"|\[|\])+, "
r"(\w|\.|\'|\"|\[|\])+\)\)")
assert_equal_in_end_with_true_or_false_re = re.compile(
r"assertEqual\((\w|[][.'\"])+ in (\w|[][.'\", ])+, (True|False)\)")
assert_equal_in_start_with_true_or_false_re = re.compile(
r"assertEqual\((True|False), (\w|[][.'\"])+ in (\w|[][.'\", ])+\)")
assert_equal_with_true_re = re.compile(
r"assertEqual\(True,")
assert_equal_with_false_re = re.compile(
r"assertEqual\(False,")
mutable_default_args = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
assert_equal_end_with_none_re = re.compile(r"(.)*assertEqual\(.+, None\)")
assert_equal_start_with_none_re = re.compile(r".*assertEqual\(None, .+\)")
assert_not_equal_end_with_none_re = re.compile(
r"(.)*assertNotEqual\(.+, None\)")
assert_not_equal_start_with_none_re = re.compile(
r"(.)*assertNotEqual\(None, .+\)")
assert_no_xrange_re = re.compile(
r"\s*xrange\s*\(")
@@ -68,34 +55,6 @@ def _translation_checks_not_enforced(filename):
return any(pat in filename for pat in ["/tests/", "rally-jobs/plugins/"])
@core.flake8ext
def assert_true_instance(logical_line):
"""Check for assertTrue(isinstance(a, b)) sentences
O316
"""
if assert_trueinst_re.match(logical_line):
yield (0, "O316: assertTrue(isinstance(a, b)) sentences not allowed")
@core.flake8ext
def assert_equal_or_not_none(logical_line):
"""Check for assertEqual(A, None) or assertEqual(None, A) sentences,
assertNotEqual(A, None) or assertNotEqual(None, A) sentences
O318
"""
msg = ("O318: assertEqual/assertNotEqual(A, None) or "
"assertEqual/assertNotEqual(None, A) sentences not allowed")
res = (assert_equal_start_with_none_re.match(logical_line) or
assert_equal_end_with_none_re.match(logical_line) or
assert_not_equal_start_with_none_re.match(logical_line) or
assert_not_equal_end_with_none_re.match(logical_line))
if res:
yield (0, msg)
@core.flake8ext
def assert_equal_true_or_false(logical_line):
"""Check for assertEqual(True, A) or assertEqual(False, A) sentences
@@ -116,22 +75,6 @@ def no_mutable_default_args(logical_line):
yield (0, msg)
@core.flake8ext
def assert_equal_in(logical_line):
"""Check for assertEqual(A in B, True), assertEqual(True, A in B),
assertEqual(A in B, False) or assertEqual(False, A in B) sentences
O338
"""
res = (assert_equal_in_start_with_true_or_false_re.search(logical_line) or
assert_equal_in_end_with_true_or_false_re.search(logical_line))
if res:
yield (0, "O338: Use assertIn/NotIn(A, B) rather than "
"assertEqual(A in B, True/False) when checking collection "
"contents.")
@core.flake8ext
def no_log_warn(logical_line):
"""Disallow 'LOG.warn('

View File

@@ -59,35 +59,6 @@ class HackingTestCase(base.BaseTestCase):
def assertLineFails(self, func, *args):
self.assertIsInstance(next(func(*args)), tuple)
def test_assert_true_instance(self):
self.assertEqual(1, len(list(checks.assert_true_instance(
"self.assertTrue(isinstance(e, "
"exception.BuildAbortException))"))))
self.assertEqual(0, len(list(checks.assert_true_instance(
"self.assertTrue()"))))
def test_assert_equal_or_not_none(self):
self.assertEqual(1, len(list(checks.assert_equal_or_not_none(
"self.assertEqual(A, None)"))))
self.assertEqual(1, len(list(checks.assert_equal_or_not_none(
"self.assertEqual(None, A)"))))
self.assertEqual(1, len(list(checks.assert_equal_or_not_none(
"self.assertNotEqual(A, None)"))))
self.assertEqual(1, len(list(checks.assert_equal_or_not_none(
"self.assertNotEqual(None, A)"))))
self.assertEqual(0,
len(list(checks.assert_equal_or_not_none(
"self.assertIsNone()"))))
self.assertEqual(0,
len(list(checks.assert_equal_or_not_none(
"self.assertIsNotNone()"))))
def test_no_mutable_default_args(self):
self.assertEqual(0, len(list(checks.no_mutable_default_args(
"def foo (bar):"))))
@@ -96,43 +67,6 @@ class HackingTestCase(base.BaseTestCase):
self.assertEqual(1, len(list(checks.no_mutable_default_args(
"def foo (bar={}):"))))
def test_assert_equal_in(self):
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(a in b, True)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual('str' in 'string', True)"))))
self.assertEqual(0, len(list(checks.assert_equal_in(
"self.assertEqual(any(a==1 for a in b), True)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(True, a in b)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(True, 'str' in 'string')"))))
self.assertEqual(0, len(list(checks.assert_equal_in(
"self.assertEqual(True, any(a==1 for a in b))"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(a in b, False)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual('str' in 'string', False)"))))
self.assertEqual(0, len(list(checks.assert_equal_in(
"self.assertEqual(any(a==1 for a in b), False)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(False, a in b)"))))
self.assertEqual(1, len(list(checks.assert_equal_in(
"self.assertEqual(False, 'str' in 'string')"))))
self.assertEqual(0, len(list(checks.assert_equal_in(
"self.assertEqual(False, any(a==1 for a in b))"))))
def test_assert_equal_true_or_false(self):
self.assertEqual(1, len(list(checks.assert_equal_true_or_false(
"self.assertEqual(True, A)"))))

View File

@@ -116,11 +116,8 @@ commands = bash -c "find {toxinidir} \
[flake8:local-plugins]
extension =
O316 = checks:assert_true_instance
O318 = checks:assert_equal_or_not_none
O323 = checks:assert_equal_true_or_false
O324 = checks:no_mutable_default_args
O338 = checks:assert_equal_in
O339 = checks:no_log_warn
O340 = checks:no_xrange
O341 = checks:no_translate_logs