Enforce style check for assertIsNone

The following checks is added in this commit:
* enforce assertIsNone instead of assertEqual with a None

Change-Id: Idc7c5cb53060dad544bb9b8659e7220b7cd41e56
Partial-Implements: blueprint mistral-hacking
This commit is contained in:
Sharat Sharma 2017-01-15 16:01:00 +05:30
parent 1eff558e43
commit 8aedd496d6
3 changed files with 38 additions and 0 deletions

10
HACKING.rst Normal file
View File

@ -0,0 +1,10 @@
Style Commandments
==================
Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/
Mistral Specific Commandments
-----------------------------
- [M318] Change assertEqual(A, None) or assertEqual(None, A) by optimal assert
like assertIsNone(A)

View File

@ -30,6 +30,23 @@ import six
oslo_namespace_imports_dot = re.compile(r"import[\s]+oslo[.][^\s]+")
oslo_namespace_imports_from_dot = re.compile(r"from[\s]+oslo[.]")
oslo_namespace_imports_from_root = re.compile(r"from[\s]+oslo[\s]+import[\s]+")
assert_equal_end_with_none_re = re.compile(
r"(.)*assertEqual\((\w|\.|\'|\"|\[|\])+, None\)")
assert_equal_start_with_none_re = re.compile(
r"(.)*assertEqual\(None, (\w|\.|\'|\"|\[|\])+\)")
def assert_equal_none(logical_line):
"""Check for assertEqual(A, None) or assertEqual(None, A) sentences
M318
"""
msg = ("M318: assertEqual(A, None) or assertEqual(None, A) "
"sentences not allowed. Use assertIsNone instead.")
res = (assert_equal_start_with_none_re.match(logical_line) or
assert_equal_end_with_none_re.match(logical_line))
if res:
yield (0, msg)
def check_oslo_namespace_imports(logical_line):
@ -210,5 +227,6 @@ class CheckForLoggingIssues(BaseASTChecker):
def factory(register):
register(assert_equal_none)
register(check_oslo_namespace_imports)
register(CheckForLoggingIssues)

View File

@ -59,6 +59,16 @@ class BaseLoggingCheckTest(base.BaseTest):
self.assertEqual(expected_errors or [], actual_errors)
def test_assert_equal_none(self):
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual(A, None)"))), 1)
self.assertEqual(len(list(checks.assert_equal_none(
"self.assertEqual(None, A)"))), 1)
self.assertEqual(
len(list(checks.assert_equal_none("self.assertIsNone()"))), 0)
class TestLoggingWithWarn(BaseLoggingCheckTest):