diff --git a/tempest/api/compute/servers/test_novnc.py b/tempest/api/compute/servers/test_novnc.py index 5801db1226..daf6a06900 100644 --- a/tempest/api/compute/servers/test_novnc.py +++ b/tempest/api/compute/servers/test_novnc.py @@ -143,7 +143,7 @@ class NoVNCConsoleTestJSON(base.BaseV2ComputeTest): data_length = len(data) if data is not None else 0 self.assertFalse(data_length <= 24 or data_length != (struct.unpack(">L", - data[20:24])[0] + 24), + data[20:24])[0] + 24), 'Server initialization was not the right format.') # Since the rest of the data on the screen is arbitrary, we will # close the socket and end our validation of the data at this point @@ -151,7 +151,7 @@ class NoVNCConsoleTestJSON(base.BaseV2ComputeTest): # initialization was the right format self.assertFalse(data_length <= 24 or data_length != (struct.unpack(">L", - data[20:24])[0] + 24)) + data[20:24])[0] + 24)) def _validate_websocket_upgrade(self): self.assertTrue( diff --git a/tempest/api/network/test_dhcp_ipv6.py b/tempest/api/network/test_dhcp_ipv6.py index 3ab2909af5..eb31ed3778 100644 --- a/tempest/api/network/test_dhcp_ipv6.py +++ b/tempest/api/network/test_dhcp_ipv6.py @@ -206,7 +206,7 @@ class NetworksTestDHCPv6(base.BaseNetworkTest): for k in port['fixed_ips']]) real_dhcp_ip, real_eui_ip = [real_ips[sub['id']] for sub in [subnet_dhcp, - subnet_slaac]] + subnet_slaac]] self.ports_client.delete_port(port['id']) self.ports.pop() body = self.ports_client.list_ports() @@ -257,7 +257,7 @@ class NetworksTestDHCPv6(base.BaseNetworkTest): for k in port['fixed_ips']]) real_dhcp_ip, real_eui_ip = [real_ips[sub['id']] for sub in [subnet_dhcp, - subnet_slaac]] + subnet_slaac]] self._clean_network() self.assertEqual(real_eui_ip, eui_ip, diff --git a/tempest/api/network/test_networks.py b/tempest/api/network/test_networks.py index 7345fd1cb6..ed8eb52251 100644 --- a/tempest/api/network/test_networks.py +++ b/tempest/api/network/test_networks.py @@ -317,7 +317,7 @@ class NetworksTest(BaseNetworkTestResources): subnet = self.create_subnet( network, **self.subnet_dict(['gateway', 'host_routes', - 'dns_nameservers', + 'dns_nameservers', 'allocation_pools'])) subnet_id = subnet['id'] new_gateway = str(netaddr.IPAddress( diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py index 2c9159ccb1..25976cea59 100644 --- a/tempest/api/network/test_ports.py +++ b/tempest/api/network/test_ports.py @@ -107,7 +107,7 @@ class PortsTestJSON(sec_base.BaseSecGroupTest): address = self.cidr address.prefixlen = self.mask_bits if ((address.version == 4 and address.prefixlen >= 30) or - (address.version == 6 and address.prefixlen >= 126)): + (address.version == 6 and address.prefixlen >= 126)): msg = ("Subnet %s isn't large enough for the test" % address.cidr) raise exceptions.InvalidConfiguration(msg) allocation_pools = {'allocation_pools': [{'start': str(address[2]), diff --git a/tempest/cmd/cleanup.py b/tempest/cmd/cleanup.py index f6af0ba83e..e6db2e9ff2 100644 --- a/tempest/cmd/cleanup.py +++ b/tempest/cmd/cleanup.py @@ -310,8 +310,8 @@ class TempestCleanup(command.Command): svc.run() with open(SAVED_STATE_JSON, 'w+') as f: - f.write(json.dumps(data, - sort_keys=True, indent=2, separators=(',', ': '))) + f.write(json.dumps(data, sort_keys=True, + indent=2, separators=(',', ': '))) def _load_json(self, saved_state_json=SAVED_STATE_JSON): try: diff --git a/tempest/cmd/run.py b/tempest/cmd/run.py index 823ed118b6..bb3fe63c8b 100644 --- a/tempest/cmd/run.py +++ b/tempest/cmd/run.py @@ -202,8 +202,8 @@ class TempestRun(command.Command): svc.run() with open(SAVED_STATE_JSON, 'w+') as f: - f.write(json.dumps(data, - sort_keys=True, indent=2, separators=(',', ': '))) + f.write(json.dumps(data, sort_keys=True, + indent=2, separators=(',', ': '))) def get_parser(self, prog_name): parser = super(TempestRun, self).get_parser(prog_name) diff --git a/tempest/common/identity.py b/tempest/common/identity.py index 525110b674..cd6d0585ca 100644 --- a/tempest/common/identity.py +++ b/tempest/common/identity.py @@ -26,7 +26,7 @@ def get_project_by_name(client, project_name): if project['name'] == project_name: return project raise lib_exc.NotFound('No such project(%s) in %s' % (project_name, - projects)) + projects)) def get_tenant_by_name(client, tenant_name): diff --git a/tempest/common/utils/net_utils.py b/tempest/common/utils/net_utils.py index 867b3dd026..b697ef150c 100644 --- a/tempest/common/utils/net_utils.py +++ b/tempest/common/utils/net_utils.py @@ -19,7 +19,6 @@ from tempest.lib import exceptions as lib_exc def get_unused_ip_addresses(ports_client, subnets_client, network_id, subnet_id, count): - """Return a list with the specified number of unused IP addresses This method uses the given ports_client to find the specified number of diff --git a/tempest/config.py b/tempest/config.py index fbe18a3e79..dc958129f3 100644 --- a/tempest/config.py +++ b/tempest/config.py @@ -1249,7 +1249,7 @@ class TempestConfigPrivate(object): logging_cfg_path = "%s/logging.conf" % os.path.dirname(path) if ((not hasattr(_CONF, 'log_config_append') or - _CONF.log_config_append is None) and + _CONF.log_config_append is None) and os.path.isfile(logging_cfg_path)): # if logging conf is in place we need to set log_config_append _CONF.log_config_append = logging_cfg_path diff --git a/tempest/lib/cmd/check_uuid.py b/tempest/lib/cmd/check_uuid.py index ac40eef681..71ecb326d6 100755 --- a/tempest/lib/cmd/check_uuid.py +++ b/tempest/lib/cmd/check_uuid.py @@ -110,7 +110,7 @@ class TestChecker(object): for item in files: if item.endswith('.py'): module_name = '.'.join((root_package, - os.path.splitext(item)[0])) + os.path.splitext(item)[0])) if not module_name.startswith(UNIT_TESTS_EXCLUDE): modules.append(module_name) return modules diff --git a/tempest/lib/common/api_version_utils.py b/tempest/lib/common/api_version_utils.py index bcb076bb00..709c3190c3 100644 --- a/tempest/lib/common/api_version_utils.py +++ b/tempest/lib/common/api_version_utils.py @@ -54,7 +54,7 @@ def check_skip_with_microversion(test_min_version, test_max_version, config_min_version = api_version_request.APIVersionRequest(cfg_min_version) config_max_version = api_version_request.APIVersionRequest(cfg_max_version) if ((min_version > max_version) or - (config_min_version > config_max_version)): + (config_min_version > config_max_version)): msg = ("Test Class versions [%s - %s]. " "Configuration versions [%s - %s]." % (min_version.get_string(), diff --git a/tempest/lib/common/preprov_creds.py b/tempest/lib/common/preprov_creds.py index fcdeb17523..10115041eb 100644 --- a/tempest/lib/common/preprov_creds.py +++ b/tempest/lib/common/preprov_creds.py @@ -273,7 +273,7 @@ class PreProvisionedCredentialProvider(cred_provider.CredentialProvider): # NOTE(andreaf) Not all fields may be available on all credentials # so defaulting to None for that case. if all([getattr(creds, k, None) == hash_attributes.get(k, None) for - k in init_attributes]): + k in init_attributes]): return _hash raise AttributeError('Invalid credentials %s' % creds) diff --git a/tempest/lib/common/utils/data_utils.py b/tempest/lib/common/utils/data_utils.py index 3483c51620..7f946120ce 100644 --- a/tempest/lib/common/utils/data_utils.py +++ b/tempest/lib/common/utils/data_utils.py @@ -170,7 +170,7 @@ def random_bytes(size=1024): :rtype: string """ return b''.join([six.int2byte(random.randint(0, 255)) - for i in range(size)]) + for i in range(size)]) # Courtesy of http://stackoverflow.com/a/312464 diff --git a/tempest/lib/services/compute/flavors_client.py b/tempest/lib/services/compute/flavors_client.py index 2fad0a4651..5d2dd469b2 100644 --- a/tempest/lib/services/compute/flavors_client.py +++ b/tempest/lib/services/compute/flavors_client.py @@ -172,7 +172,7 @@ class FlavorsClient(base_compute_client.BaseComputeClient): https://developer.openstack.org/api-ref/compute/#show-an-extra-spec-for-a-flavor """ resp, body = self.get('flavors/%s/os-extra_specs/%s' % (flavor_id, - key)) + key)) body = json.loads(body) self.validate_response( schema_extra_specs.set_get_flavor_extra_specs_key, diff --git a/tempest/lib/services/compute/servers_client.py b/tempest/lib/services/compute/servers_client.py index 9eed4b347f..18e08cc066 100644 --- a/tempest/lib/services/compute/servers_client.py +++ b/tempest/lib/services/compute/servers_client.py @@ -636,7 +636,7 @@ class ServersClient(base_compute_client.BaseComputeClient): def list_virtual_interfaces(self, server_id): """List the virtual interfaces used in an instance.""" resp, body = self.get('/'.join(['servers', server_id, - 'os-virtual-interfaces'])) + 'os-virtual-interfaces'])) body = json.loads(body) self.validate_response(schema.list_virtual_interfaces, resp, body) return rest_client.ResponseBody(resp, body) diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py index dbb9accee5..5f4fb29c23 100644 --- a/tempest/scenario/manager.py +++ b/tempest/scenario/manager.py @@ -166,7 +166,7 @@ class ScenarioTest(tempest.test.BaseTestCase): clients.security_groups_client.list_security_groups( ).get('security_groups') sec_dict = dict([(s['name'], s['id']) - for s in security_groups]) + for s in security_groups]) sec_groups_names = [s['name'] for s in kwargs.pop( 'security_groups')] diff --git a/tempest/scenario/test_minimum_basic.py b/tempest/scenario/test_minimum_basic.py index 2b35e45aac..cee543bb54 100644 --- a/tempest/scenario/test_minimum_basic.py +++ b/tempest/scenario/test_minimum_basic.py @@ -48,6 +48,7 @@ class TestMinimumBasicScenario(manager.ScenarioTest): 10. Check SSH connection to instance after reboot """ + def nova_show(self, server): got_server = (self.servers_client.show_server(server['id']) ['server']) diff --git a/tempest/scenario/test_volume_boot_pattern.py b/tempest/scenario/test_volume_boot_pattern.py index e5730e7c7d..6ed7e3092e 100644 --- a/tempest/scenario/test_volume_boot_pattern.py +++ b/tempest/scenario/test_volume_boot_pattern.py @@ -86,7 +86,6 @@ class TestVolumeBootPattern(manager.EncryptionScenarioTest): 'Cinder volume snapshots are disabled') @utils.services('compute', 'volume', 'image') def test_volume_boot_pattern(self): - """This test case attempts to reproduce the following steps: * Create in Cinder some bootable volume importing a Glance image diff --git a/tempest/test_discover/plugins.py b/tempest/test_discover/plugins.py index 9c1805213f..7a037ebe0a 100644 --- a/tempest/test_discover/plugins.py +++ b/tempest/test_discover/plugins.py @@ -179,6 +179,7 @@ class TempestTestPluginManager(object): This class is used to manage the lifecycle of external tempest test plugins. It provides functions for getting set """ + def __init__(self): self.ext_plugins = stevedore.ExtensionManager( 'tempest.test_plugins', invoke_on_load=True, diff --git a/tempest/test_discover/test_discover.py b/tempest/test_discover/test_discover.py index 330f370f73..143c6e1627 100644 --- a/tempest/test_discover/test_discover.py +++ b/tempest/test_discover/test_discover.py @@ -37,7 +37,7 @@ def load_tests(loader, tests, pattern): top_level_dir=base_path)) else: suite.addTests(loader.discover(full_test_dir, pattern=pattern, - top_level_dir=base_path)) + top_level_dir=base_path)) plugin_load_tests = ext_plugins.get_plugin_load_tests_tuple() if not plugin_load_tests: diff --git a/tempest/tests/cmd/test_workspace.py b/tempest/tests/cmd/test_workspace.py index b4f6c5f31d..7a6b57691a 100644 --- a/tempest/tests/cmd/test_workspace.py +++ b/tempest/tests/cmd/test_workspace.py @@ -48,7 +48,7 @@ class TestTempestWorkspace(TestTempestWorkspaceBase): stdout, stderr = process.communicate() return_code = process.returncode msg = ("%s failed with:\nstdout: %s\nstderr: %s" % (' '.join(cmd), - stdout, stderr)) + stdout, stderr)) self.assertEqual(return_code, expected, msg) def test_run_workspace_list(self): diff --git a/tempest/tests/lib/common/test_dynamic_creds.py b/tempest/tests/lib/common/test_dynamic_creds.py index ebcf5d17a7..4723458467 100644 --- a/tempest/tests/lib/common/test_dynamic_creds.py +++ b/tempest/tests/lib/common/test_dynamic_creds.py @@ -109,8 +109,8 @@ class TestDynamicCredentialProvider(base.TestCase): return_value=(rest_client.ResponseBody (200, {'roles': [{'id': id, 'name': name}, - {'id': '1', 'name': 'FakeRole'}, - {'id': '2', 'name': 'Member'}]})))) + {'id': '1', 'name': 'FakeRole'}, + {'id': '2', 'name': 'Member'}]})))) return roles_fix def _mock_list_2_roles(self): @@ -120,8 +120,8 @@ class TestDynamicCredentialProvider(base.TestCase): return_value=(rest_client.ResponseBody (200, {'roles': [{'id': '1234', 'name': 'role1'}, - {'id': '1', 'name': 'FakeRole'}, - {'id': '12345', 'name': 'role2'}]})))) + {'id': '1', 'name': 'FakeRole'}, + {'id': '12345', 'name': 'role2'}]})))) return roles_fix def _mock_assign_user_role(self): diff --git a/tempest/tests/lib/services/compute/test_images_client.py b/tempest/tests/lib/services/compute/test_images_client.py index c2c3b7618d..d1500e5158 100644 --- a/tempest/tests/lib/services/compute/test_images_client.py +++ b/tempest/tests/lib/services/compute/test_images_client.py @@ -186,15 +186,19 @@ class TestImagesClient(base.BaseServiceTest): def _test_resource_deleted(self, bytes_body=False): params = {"id": self.FAKE_IMAGE_ID} expected_op = self.FAKE_IMAGE_DATA['show'] - self.useFixture(fixtures.MockPatch('tempest.lib.services.compute' - '.images_client.ImagesClient.show_image', - side_effect=lib_exc.NotFound)) + self.useFixture( + fixtures.MockPatch( + 'tempest.lib.services.compute' + '.images_client.ImagesClient.show_image', + side_effect=lib_exc.NotFound)) self.assertEqual(True, self.client.is_resource_deleted(**params)) tempdata = copy.deepcopy(self.FAKE_IMAGE_DATA['show']) tempdata['image']['id'] = None - self.useFixture(fixtures.MockPatch('tempest.lib.services.compute' - '.images_client.ImagesClient.show_image', - return_value=expected_op)) + self.useFixture( + fixtures.MockPatch( + 'tempest.lib.services.compute' + '.images_client.ImagesClient.show_image', + return_value=expected_op)) self.assertEqual(False, self.client.is_resource_deleted(**params)) def test_list_images_with_str_body(self): diff --git a/tempest/tests/lib/services/volume/v3/test_scheduler_stats_client.py b/tempest/tests/lib/services/volume/v3/test_scheduler_stats_client.py index e0f55662d5..84c75890d7 100644 --- a/tempest/tests/lib/services/volume/v3/test_scheduler_stats_client.py +++ b/tempest/tests/lib/services/volume/v3/test_scheduler_stats_client.py @@ -62,7 +62,7 @@ class TestSchedulerStatsClient(base.BaseServiceTest): resp_body = self.FAKE_POOLS_LIST else: resp_body = {'pools': [{'name': pool['name']} - for pool in self.FAKE_POOLS_LIST['pools']]} + for pool in self.FAKE_POOLS_LIST['pools']]} self.check_service_client_function( self.client.list_pools, 'tempest.lib.common.rest_client.RestClient.get', diff --git a/tempest/tests/test_hacking.py b/tempest/tests/test_hacking.py index 9534ce8df5..83c1abbe7e 100644 --- a/tempest/tests/test_hacking.py +++ b/tempest/tests/test_hacking.py @@ -48,6 +48,7 @@ class HackingTestCase(base.TestCase): just assertTrue if the check is expected to fail and assertFalse if it should pass. """ + def test_no_setup_teardown_class_for_tests(self): self.assertTrue(checks.no_setup_teardown_class_for_tests( " def setUpClass(cls):", './tempest/tests/fake_test.py')) diff --git a/tools/format.sh b/tools/format.sh new file mode 100755 index 0000000000..adffb8cc64 --- /dev/null +++ b/tools/format.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cd $(dirname "$(readlink -f "$0")") + +autopep8 --exit-code --max-line-length=79 --experimental --in-place -r ../tempest ../setup.py && echo Formatting was not needed. >&2 + diff --git a/tox.ini b/tox.ini index b5655077f0..433f16841f 100644 --- a/tox.ini +++ b/tox.ini @@ -197,11 +197,21 @@ commands = whitelist_externals = rm [testenv:pep8] +deps = + -r test-requirements.txt + autopep8 basepython = python3 commands = + autopep8 --exit-code --max-line-length=79 --experimental --diff -r tempest setup.py flake8 {posargs} check-uuid +[testenv:autopep8] +deps = autopep8 +basepython = python3 +commands = + autopep8 --max-line-length=79 --experimental --in-place -r tempest setup.py + [testenv:uuidgen] commands = check-uuid --fix