Merge "Add HACKING.rst and hacking test case."

This commit is contained in:
Jenkins 2016-11-30 16:23:51 +00:00 committed by Gerrit Code Review
commit bc6a3663cb
4 changed files with 63 additions and 3 deletions

13
HACKING.rst Normal file
View File

@ -0,0 +1,13 @@
Kolla Style Commandments
============================
- Step 1: Read the OpenStack Style Commandments
http://docs.openstack.org/developer/hacking/
- Step 2: Read on
Kolla Specific Commandments
-------------------------------
- [K301] Method's default argument shouldn't be mutable.
- [K302] Use LOG.warning instead of LOG.warn.

View File

@ -21,16 +21,16 @@ def no_log_warn(logical_line):
Deprecated LOG.warn(), instead use LOG.warning
https://bugs.launchpad.net/senlin/+bug/1508442
N352
K302
"""
msg = ("N352: LOG.warn is deprecated, please use LOG.warning!")
msg = ("K302: LOG.warn is deprecated, please use LOG.warning!")
if "LOG.warn(" in logical_line:
yield (0, msg)
def no_mutable_default_args(logical_line):
msg = "N301: Method's default argument shouldn't be mutable!"
msg = "K301: Method's default argument shouldn't be mutable!"
if mutable_default_args.match(logical_line):
yield (0, msg)

View File

@ -0,0 +1,46 @@
# Copyright 2016 GohighSec
#
# 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 ddt
from kolla.hacking import checks
from kolla.tests import base
@ddt.ddt
class HackingTestCase(base.TestCase):
"""Hacking test cases
This class tests the hacking checks in kolla.hacking.checks by passing
strings to the check methods like the pep8/flake8 parser would. The parser
loops over each line in the file and then passes the parameters to the
check method.
"""
def test_no_log_warn_check(self):
self.assertEqual(0, len(list(checks.no_log_warn(
"LOG.warning('This should not trigger LOG.warn"
"hacking check.')"))))
self.assertEqual(1, len(list(checks.no_log_warn(
"LOG.warn('We should not use LOG.warn')"))))
def test_no_mutable_default_args(self):
self.assertEqual(1, len(list(checks.no_mutable_default_args(
"def get_info_from_bdm(virt_type, bdm, mapping=[])"))))
self.assertEqual(0, len(list(checks.no_mutable_default_args(
"defined = []"))))
self.assertEqual(0, len(list(checks.no_mutable_default_args(
"defined, undefined = [], {}"))))

View File

@ -4,6 +4,7 @@
bandit>=1.1.0 # Apache-2.0
bashate>=0.2 # Apache-2.0
beautifulsoup4 # MIT
ddt>=1.0.1 # MIT
doc8 # Apache-2.0
extras # MIT
graphviz!=0.5.0,>=0.4.0 # MIT License