1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
# All Rights Reserved.
#
# 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 inspect
from rally.cli import main
from rally.common.plugin import info
from tests.unit import test
class DocstringsTestCase(test.TestCase):
@staticmethod
def _get_all_category_methods(category):
all_methods = inspect.getmembers(
category,
predicate=lambda x: inspect.ismethod(x) or inspect.isfunction(x))
return [m for m in all_methods if not m[0].startswith("_")]
def test_params(self):
for category in main.categories.values():
all_methods = self._get_all_category_methods(category)
for name, method in all_methods:
m_info = info.parse_docstring(method.__doc__)
if m_info["params"]:
print(m_info)
self.fail("The description of parameters for CLI methods "
"should be transmitted as a 'help' argument of "
"`rally.cli.cliutils.arg` decorator. You should "
"remove descriptions from docstring of "
"`%s.%s.%s`" % (category.__module__,
category.__class__,
name))
|