¡@

Home 

OpenStack Study: test_singular_plural.py

OpenStack Index

**** CubicPower OpenStack Study ****

# Copyright 2012 Red Hat, Inc.

#

# 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 ast

from keystone.contrib.admin_crud import core as admin_crud_core

from keystone.contrib.s3 import core as s3_core

from keystone.contrib.stats import core as stats_core

from keystone.contrib.user_crud import core as user_crud_core

from keystone.identity import core as identity_core

from keystone import service

**** CubicPower OpenStack Study ****

class TestSingularPlural(object):

**** CubicPower OpenStack Study ****

    def test_keyword_arg_condition_or_methods(self):

        """Raise if we see a keyword arg called 'condition' or 'methods'."""

        modules = [admin_crud_core, s3_core, stats_core,

                   user_crud_core, identity_core, service]

        for module in modules:

            filename = module.__file__

            if filename.endswith(".pyc"):

                # In Python 2, the .py and .pyc files are in the same dir.

                filename = filename[:-1]

            with open(filename) as fil:

                source = fil.read()

            module = ast.parse(source, filename)

            last_stmt_or_expr = None

            for node in ast.walk(module):

                if isinstance(node, ast.stmt) or isinstance(node, ast.expr):

                    # keyword nodes don't have line numbers, so we need to

                    # get that information from the parent stmt or expr.

                    last_stmt_or_expr = node

                elif isinstance(node, ast.keyword):

                    for bad_word in ["condition", "methods"]:

                        if node.arg == bad_word:

                            raise AssertionError(

                                "Suspicious name '%s' at %s line %s" %

                                (bad_word, filename, last_stmt_or_expr.lineno))