From f741d0b35a069d2fc47e7ea1baeaf1f4ff6344d3 Mon Sep 17 00:00:00 2001 From: Ken'ichi Ohmichi Date: Mon, 1 May 2017 16:56:14 -0700 Subject: [PATCH] Add T115 for admin test path Sometimes commiters tried to add tempest tests which require admin credential under non-admin test path and that caused confusions to tempest users. This patch adds some coding rule to make test path clear for the maintenance. NOTE: This patch adds #noqa to AbsoluteLimitsTests because the test class needs force_tenant_isolation which requires admin credential indirectly but the test itself is not admin test. The history is Id71a705cf9b1dd0c0d41a2fb45ab77c95430a123 Change-Id: Id11eec13f2e431af8bbb83ac4904b2047e7932a7 --- HACKING.rst | 1 + .../api/volume/test_volume_absolute_limits.py | 2 +- tempest/hacking/checks.py | 22 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/HACKING.rst b/HACKING.rst index c0a857c0d8..058f686b93 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -22,6 +22,7 @@ Tempest Specific Commandments - [T112] Check that tempest.lib should not import local tempest code - [T113] Check that tests use data_utils.rand_uuid() instead of uuid.uuid4() - [T114] Check that tempest.lib does not use tempest config +- [T115] Check that admin tests should exist under admin path - [N322] Method's default argument shouldn't be mutable Test Data/Configuration diff --git a/tempest/api/volume/test_volume_absolute_limits.py b/tempest/api/volume/test_volume_absolute_limits.py index 870b9f0872..4018468950 100644 --- a/tempest/api/volume/test_volume_absolute_limits.py +++ b/tempest/api/volume/test_volume_absolute_limits.py @@ -24,7 +24,7 @@ CONF = config.CONF # NOTE(zhufl): This inherits from BaseVolumeAdminTest because # it requires force_tenant_isolation=True, which need admin # credentials to create non-admin users for the tests. -class AbsoluteLimitsTests(base.BaseVolumeAdminTest): +class AbsoluteLimitsTests(base.BaseVolumeAdminTest): # noqa # avoid existing volumes of pre-defined tenant force_tenant_isolation = True diff --git a/tempest/hacking/checks.py b/tempest/hacking/checks.py index 4123ae5653..067da09a55 100644 --- a/tempest/hacking/checks.py +++ b/tempest/hacking/checks.py @@ -273,6 +273,27 @@ def dont_use_config_in_tempest_lib(logical_line, filename): yield(0, msg) +def dont_put_admin_tests_on_nonadmin_path(logical_line, physical_line, + filename): + """Check admin tests should exist under admin path + + T115 + """ + + if 'tempest/api/' not in filename: + return + + if pep8.noqa(physical_line): + return + + if not re.match('class .*Test.*\(.*Admin.*\):', logical_line): + return + + if not re.match('.\/tempest\/api\/.*\/admin\/.*', filename): + msg = 'T115: All admin tests should exist under admin path.' + yield(0, msg) + + def factory(register): register(import_no_clients_in_api_and_scenario_tests) register(scenario_tests_need_service_tags) @@ -287,3 +308,4 @@ def factory(register): register(dont_import_local_tempest_into_lib) register(dont_use_config_in_tempest_lib) register(use_rand_uuid_instead_of_uuid4) + register(dont_put_admin_tests_on_nonadmin_path)