Merge "add hacking for assertIsNotNone"

This commit is contained in:
Jenkins 2016-07-27 07:19:40 +00:00 committed by Gerrit Code Review
commit adeb9cb3c7
3 changed files with 33 additions and 0 deletions

View File

@ -16,6 +16,8 @@ Magnum Specific Commandments
assertIsInstance(A, B). assertIsInstance(A, B).
- [M318] Change assertEqual(A, None) or assertEqual(None, A) by optimal assert - [M318] Change assertEqual(A, None) or assertEqual(None, A) by optimal assert
like assertIsNone(A) like assertIsNone(A)
- [M319] Change assertNotEqual(A, None) or assertNotEqual(None, A)
by optimal assert like assertIsNotNone(A)
- [M322] Method's default argument shouldn't be mutable. - [M322] Method's default argument shouldn't be mutable.
- [M323] Change assertEqual(True, A) or assertEqual(False, A) by optimal assert - [M323] Change assertEqual(True, A) or assertEqual(False, A) by optimal assert
like assertTrue(A) or assertFalse(A) like assertTrue(A) or assertFalse(A)

View File

@ -39,6 +39,10 @@ assert_equal_end_with_none_re = re.compile(
r"(.)*assertEqual\((\w|\.|\'|\"|\[|\])+, None\)") r"(.)*assertEqual\((\w|\.|\'|\"|\[|\])+, None\)")
assert_equal_start_with_none_re = re.compile( assert_equal_start_with_none_re = re.compile(
r"(.)*assertEqual\(None, (\w|\.|\'|\"|\[|\])+\)") r"(.)*assertEqual\(None, (\w|\.|\'|\"|\[|\])+\)")
assert_not_equal_end_with_none_re = re.compile(
r"(.)*assertNotEqual\((\w|\.|\'|\"|\[|\])+, None\)")
assert_not_equal_start_with_none_re = re.compile(
r"(.)*assertNotEqual\(None, (\w|\.|\'|\"|\[|\])+\)")
assert_equal_with_true_re = re.compile( assert_equal_with_true_re = re.compile(
r"assertEqual\(True,") r"assertEqual\(True,")
assert_equal_with_false_re = re.compile( assert_equal_with_false_re = re.compile(
@ -66,6 +70,19 @@ def assert_equal_none(logical_line):
yield (0, msg) yield (0, msg)
def assert_not_equal_none(logical_line):
"""Check for assertNotEqual(A, None) or assertNotEqual(None, A) sentences
M319
"""
msg = ("M319: assertNotEqual(A, None) or assertNotEqual(None, A) "
"sentences not allowed")
res = (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)
def no_mutable_default_args(logical_line): def no_mutable_default_args(logical_line):
msg = "M322: Method's default argument shouldn't be mutable!" msg = "M322: Method's default argument shouldn't be mutable!"
if mutable_default_args.match(logical_line): if mutable_default_args.match(logical_line):
@ -161,6 +178,7 @@ def no_log_warn(logical_line):
def factory(register): def factory(register):
register(no_mutable_default_args) register(no_mutable_default_args)
register(assert_equal_none) register(assert_equal_none)
register(assert_not_equal_none)
register(assert_equal_true_or_false) register(assert_equal_true_or_false)
register(assert_equal_not_none) register(assert_equal_not_none)
register(assert_true_isinstance) register(assert_true_isinstance)

View File

@ -130,6 +130,19 @@ class HackingTestCase(base.TestCase):
code = "self.assertIsNone()" code = "self.assertIsNone()"
self._assert_has_no_errors(code, check) self._assert_has_no_errors(code, check)
def test_assert_not_equal_none(self):
errors = [(1, 0, "M319")]
check = checks.assert_not_equal_none
code = "self.assertNotEqual(A, None)"
self._assert_has_errors(code, check, errors)
code = "self.assertNotEqual(None, A)"
self._assert_has_errors(code, check, errors)
code = "self.assertIsNotNone()"
self._assert_has_no_errors(code, check)
def test_assert_equal_true_or_false(self): def test_assert_equal_true_or_false(self):
errors = [(1, 0, "M323")] errors = [(1, 0, "M323")]
check = checks.assert_equal_true_or_false check = checks.assert_equal_true_or_false