Fix N536 - Use assertIsNone regex

self.assertEqual((None, None), A) is valid since (None, None) is not
None. However assert_equal_none recognizes it as invalid.

Solution: Add '$' (Match the end of the text) with/without comment ( |\t)*#.*)?
to the regular expressions which intent to match None at the end of string.

Change-Id: Ic5e5c16c9225a80b2765a1d3cde9a5b9e83a06fb
This commit is contained in:
Ngo Quoc Cuong 2017-07-12 04:41:44 -04:00
parent 7180158546
commit 69e2a3cec1
3 changed files with 23 additions and 2 deletions

View File

@ -36,9 +36,9 @@ namespace_imports_from_root = re.compile(r"from[\s]+([\w]+)[\s]+import[\s]+")
contextlib_nested = re.compile(r"^\s*with (contextlib\.)?nested\(")
assert_equal_none_re = re.compile(
r"assertEqual\(.*?,\s+None\)|assertEqual\(None,")
r"assertEqual\(.*?,\s+None\)(( |\t)*#.*)?$|assertEqual\(None,")
assert_is_none_re = re.compile(
r"assertIs(Not)?\(.*,\s+None\)|assertIs(Not)?\(None,")
r"assertIs(Not)?\(.*,\s+None\)(( |\t)*#.*)?$|assertIs(Not)?\(None,")
def use_jsonutils(logical_line, filename):

View File

@ -188,6 +188,14 @@ class HackingTestCase(base.BaseTestCase):
"self.assertEqual(None, A)"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual(None, A) # Comment"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual((None, None), A)"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual((None, None), A) # Comment"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual(A, (None, None))"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual(A, (None, None)) # Comment"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot(A, None)"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
@ -196,6 +204,14 @@ class HackingTestCase(base.BaseTestCase):
"assertIsNot(None, A)"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot(None, A) # Comment"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot((None, None), A)"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot((None, None), A) # Comment"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot(A, (None, None))"))), 0)
self.assertEqual(len(list(checks.assert_equal_none(
"assertIsNot(A, (None, None)) # Comment"))), 0)
self.assertEqual(
len(list(checks.assert_equal_none("self.assertIsNone(A)"))), 0)
self.assertEqual(

View File

@ -0,0 +1,5 @@
---
fixes:
- Update hacking check ``N536``. Current implementation recognizes
``self.assertEqual((None, None), A)`` as invalid incorrectly while
``(None, None)`` is not ``None``.