53 lines
2.3 KiB
Python
53 lines
2.3 KiB
Python
![]() |
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||
|
|
||
|
# 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.ec2 import core as ec2_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
|
||
|
|
||
|
|
||
|
class TestSingularPlural(object):
|
||
|
def test_keyword_arg_condition_or_methods(self):
|
||
|
"""Raise if we see a keyword arg called 'condition' or 'methods'"""
|
||
|
modules = [admin_crud_core, ec2_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))
|