Replace assertTrue(isinstance()) with assertIsInstance()

Some of tests use different method of assertTrue(isinstance(A, B))
or assertEqual(type(A), B). The correct way is to use
assertIsInstance(A, B) provided by test tools.
And add some relevant hacking files.

Change-Id: I4b154a2e2898e316c61decf856547d57b1dcc2f8
This commit is contained in:
lihaijing 2017-06-23 17:19:37 +08:00 committed by Sanket Sudake
parent dbdd45789b
commit f1e54d1a7f
6 changed files with 89 additions and 4 deletions

12
HACKING.rst Normal file
View File

@ -0,0 +1,12 @@
Omni Style Commandments
=======================
- Step 1: Read the OpenStack Style Commandments
https://github.com/openstack-dev/hacking/blob/master/HACKING.rst
- Step 2: Read on
Omni Specific Commandments
--------------------------
- [O316] Change assertTrue(isinstance(A, B)) by optimal assert like
assertIsInstance(A, B)

View File

@ -48,15 +48,14 @@ class GCEGlanceTestCase(base.StoreBaseTest):
location = Location("gce", StoreLocation, cfg.CONF,
store_specs=store_specs)
size = self.store.get_size(location)
self.assertTrue(isinstance(size, int))
self.assertIsInstance(size, int)
self.assertEqual(10 * units.Gi, size)
def test_store_location_initialization(self):
location.SCHEME_TO_CLS_MAP["gce"] = {}
location.SCHEME_TO_CLS_MAP['gce']['location_class'] = StoreLocation
uri = "gce://%s/fake_gce_id/fake_glance_id" % (self.store.gce_project)
self.assertTrue(
isinstance(location.get_location_from_uri(uri), Location))
self.assertIsInstance(location.get_location_from_uri(uri), Location)
def test_store_location_initialization_with_invalid_url(self):
location.SCHEME_TO_CLS_MAP["scheme"] = {}

0
hacking/__init__.py Normal file
View File

48
hacking/checks.py Normal file
View File

@ -0,0 +1,48 @@
# Copyright (c) 2017 OpenStack Foundation.
#
# 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
"""
Guidelines for writing new hacking checks
- Use only for Omni-specific tests. OpenStack general tests
should be submitted to the common 'hacking' module.
- Pick numbers in the range O3xx. Find the current test with
the highest allocated number and then pick the next value.
If nova has an N3xx code for that test, use the same number.
- Keep the test method code in the source file ordered based
on the O3xx value.
- List the new rule in the top level HACKING.rst file
- Add test cases for each new rule to omnitests/test_hacking.py
"""
asse_trueinst_re = re.compile(
r"(.)*assertTrue\(isinstance\((\w|\.|\'|\"|\[|\])+, "
"(\w|\.|\'|\"|\[|\])+\)\)")
def assert_true_instance(logical_line):
"""Check for assertTrue(isinstance(a, b)) sentences
O316
"""
if asse_trueinst_re.match(logical_line):
yield (0, "O316: assertTrue(isinstance(a, b)) sentences not allowed")
def factory(register):
register(assert_true_instance)

26
omnitests/test_hacking.py Normal file
View File

@ -0,0 +1,26 @@
# Copyright (c) 2017 OpenStack Foundation.
#
# 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 testtools
from hacking import checks
class HackingTestCase(testtools.TestCase):
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()"))))

View File

@ -22,4 +22,4 @@ show-source = True
enable-extensions = H106,H203
ignore = E123,E125,H404,H405
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,openstack
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,openstack