Skip to content

Commit ce3bfd5

Browse files
run black on devtools_testutils (Azure#16264)
cleans up the code in the `devtools_testutils` folder
1 parent a78be2e commit ce3bfd5

File tree

12 files changed

+492
-337
lines changed

12 files changed

+492
-337
lines changed
Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,32 @@
1-
from .mgmt_testcase import (AzureMgmtTestCase, AzureMgmtPreparer)
1+
from .mgmt_testcase import AzureMgmtTestCase, AzureMgmtPreparer
22
from .azure_testcase import AzureTestCase, is_live, get_region_override
3-
from .resource_testcase import (FakeResource, ResourceGroupPreparer, RandomNameResourceGroupPreparer, CachedResourceGroupPreparer)
4-
from .storage_testcase import FakeStorageAccount, StorageAccountPreparer, CachedStorageAccountPreparer
3+
from .resource_testcase import (
4+
FakeResource,
5+
ResourceGroupPreparer,
6+
RandomNameResourceGroupPreparer,
7+
CachedResourceGroupPreparer,
8+
)
9+
from .storage_testcase import (
10+
FakeStorageAccount,
11+
StorageAccountPreparer,
12+
CachedStorageAccountPreparer,
13+
)
514
from .keyvault_preparer import KeyVaultPreparer
615
from .powershell_preparer import PowerShellPreparer
716

817
__all__ = [
9-
'AzureMgmtTestCase', 'AzureMgmtPreparer',
10-
'FakeResource', 'ResourceGroupPreparer',
11-
'StorageAccountPreparer', 'CachedStorageAccountPreparer',
12-
'FakeStorageAccount',
13-
'AzureTestCase', 'is_live', 'get_region_override',
14-
'KeyVaultPreparer', 'RandomNameResourceGroupPreparer',
15-
'CachedResourceGroupPreparer', 'PowerShellPreparer'
18+
"AzureMgmtTestCase",
19+
"AzureMgmtPreparer",
20+
"FakeResource",
21+
"ResourceGroupPreparer",
22+
"StorageAccountPreparer",
23+
"CachedStorageAccountPreparer",
24+
"FakeStorageAccount",
25+
"AzureTestCase",
26+
"is_live",
27+
"get_region_override",
28+
"KeyVaultPreparer",
29+
"RandomNameResourceGroupPreparer",
30+
"CachedResourceGroupPreparer",
31+
"PowerShellPreparer",
1632
]

tools/azure-sdk-tools/devtools_testutils/azure_testcase.py

Lines changed: 86 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
#-------------------------------------------------------------------------
1+
# -------------------------------------------------------------------------
22
# Copyright (c) Microsoft Corporation. All rights reserved.
33
# Licensed under the MIT License. See License.txt in the project root for
44
# license information.
5-
#--------------------------------------------------------------------------
5+
# --------------------------------------------------------------------------
66
import functools
77
import inspect
88
import logging
99
import os.path
1010
import sys
1111
import zlib
12+
1213
try:
1314
from inspect import getfullargspec as get_arg_spec
1415
except ImportError:
@@ -18,9 +19,12 @@
1819
from dotenv import load_dotenv, find_dotenv
1920

2021
from azure_devtools.scenario_tests import (
21-
ReplayableTest, AzureTestError,
22-
GeneralNameReplacer, RequestUrlNormalizer,
23-
AuthenticationMetadataFilter, OAuthRequestResponsesFilter
22+
ReplayableTest,
23+
AzureTestError,
24+
GeneralNameReplacer,
25+
RequestUrlNormalizer,
26+
AuthenticationMetadataFilter,
27+
OAuthRequestResponsesFilter,
2428
)
2529
from azure_devtools.scenario_tests.config import TestConfig
2630
from azure_devtools.scenario_tests.utilities import trim_kwargs_from_test_function
@@ -34,6 +38,7 @@
3438
except SyntaxError:
3539
pass
3640

41+
3742
class HttpStatusCode(object):
3843
OK = 200
3944
Created = 201
@@ -48,9 +53,9 @@ def get_resource_name(name_prefix, identifier):
4853
# resource names, but each test will get the same name on repeat runs,
4954
# which is needed for playback.
5055
# Most resource names have a length limit, so we use a crc32
51-
checksum = zlib.adler32(identifier) & 0xffffffff
52-
name = '{}{}'.format(name_prefix, hex(checksum)[2:]).rstrip('L')
53-
if name.endswith('L'):
56+
checksum = zlib.adler32(identifier) & 0xFFFFFFFF
57+
name = "{}{}".format(name_prefix, hex(checksum)[2:]).rstrip("L")
58+
if name.endswith("L"):
5459
name = name[:-1]
5560
return name
5661

@@ -60,46 +65,56 @@ def get_qualified_method_name(obj, method_name):
6065
# test_mgmt_network.test_public_ip_addresses
6166
_, filename = os.path.split(inspect.getsourcefile(type(obj)))
6267
module_name, _ = os.path.splitext(filename)
63-
return '{0}.{1}'.format(module_name, method_name)
68+
return "{0}.{1}".format(module_name, method_name)
6469

6570

6671
def is_live():
67-
"""A module version of is_live, that could be used in pytest marker.
68-
"""
69-
if not hasattr(is_live, '_cache'):
72+
"""A module version of is_live, that could be used in pytest marker."""
73+
if not hasattr(is_live, "_cache"):
7074
config_file = os.path.join(os.path.dirname(__file__), TEST_SETTING_FILENAME)
7175
if not os.path.exists(config_file):
7276
config_file = None
7377
is_live._cache = TestConfig(config_file=config_file).record_mode
7478
return is_live._cache
7579

7680

77-
def get_region_override(default='westus'):
78-
region = os.environ.get('RESOURCE_REGION', None) or default
81+
def get_region_override(default="westus"):
82+
region = os.environ.get("RESOURCE_REGION", None) or default
7983
if not region:
80-
raise ValueError('Region should not be None; set a non-empty-string region to either the RESOURCE_REGION environment variable or the default parameter to this function.')
84+
raise ValueError(
85+
"Region should not be None; set a non-empty-string region to either the RESOURCE_REGION environment variable or the default parameter to this function."
86+
)
8187
return region
8288

8389

8490
def _is_autorest_v3(client_class):
85-
""" IS this client a autorestv3/track2 one?.
91+
"""IS this client a autorestv3/track2 one?.
8692
Could be refined later if necessary.
8793
"""
8894
args = get_arg_spec(client_class.__init__).args
8995
return "credential" in args
9096

9197

9298
class AzureTestCase(ReplayableTest):
93-
def __init__(self, method_name, config_file=None,
94-
recording_dir=None, recording_name=None,
95-
recording_processors=None, replay_processors=None,
96-
recording_patches=None, replay_patches=None,
97-
**kwargs):
99+
def __init__(
100+
self,
101+
method_name,
102+
config_file=None,
103+
recording_dir=None,
104+
recording_name=None,
105+
recording_processors=None,
106+
replay_processors=None,
107+
recording_patches=None,
108+
replay_patches=None,
109+
**kwargs
110+
):
98111
self.working_folder = os.path.dirname(__file__)
99112
self.qualified_test_name = get_qualified_method_name(self, method_name)
100113
self._fake_settings, self._real_settings = self._load_settings()
101114
self.scrubber = GeneralNameReplacer()
102-
config_file = config_file or os.path.join(self.working_folder, TEST_SETTING_FILENAME)
115+
config_file = config_file or os.path.join(
116+
self.working_folder, TEST_SETTING_FILENAME
117+
)
103118
if not os.path.exists(config_file):
104119
config_file = None
105120
load_dotenv(find_dotenv())
@@ -108,7 +123,8 @@ def __init__(self, method_name, config_file=None,
108123
config_file=config_file,
109124
recording_dir=recording_dir,
110125
recording_name=recording_name or self.qualified_test_name,
111-
recording_processors=recording_processors or self._get_recording_processors(),
126+
recording_processors=recording_processors
127+
or self._get_recording_processors(),
112128
replay_processors=replay_processors or self._get_replay_processors(),
113129
recording_patches=recording_patches,
114130
replay_patches=replay_patches,
@@ -121,13 +137,16 @@ def settings(self):
121137
if self._real_settings:
122138
return self._real_settings
123139
else:
124-
raise AzureTestError('Need a mgmt_settings_real.py file to run tests live.')
140+
raise AzureTestError(
141+
"Need a mgmt_settings_real.py file to run tests live."
142+
)
125143
else:
126144
return self._fake_settings
127145

128146
def _load_settings(self):
129147
try:
130148
from . import mgmt_settings_real as real_settings
149+
131150
return fake_settings, real_settings
132151
except ImportError:
133152
return fake_settings, None
@@ -137,22 +156,28 @@ def _get_recording_processors(self):
137156
self.scrubber,
138157
AuthenticationMetadataFilter(),
139158
OAuthRequestResponsesFilter(),
140-
RequestUrlNormalizer()
159+
RequestUrlNormalizer(),
141160
]
142161

143162
def _get_replay_processors(self):
144-
return [
145-
RequestUrlNormalizer()
146-
]
163+
return [RequestUrlNormalizer()]
147164

148165
def is_playback(self):
149166
return not self.is_live
150167

151168
def get_settings_value(self, key):
152-
key_value = os.environ.get("AZURE_"+key, None)
153-
154-
if key_value and self._real_settings and getattr(self._real_settings, key) != key_value:
155-
raise ValueError("You have both AZURE_{key} env variable and mgmt_settings_real.py for {key} to different values".format(key=key))
169+
key_value = os.environ.get("AZURE_" + key, None)
170+
171+
if (
172+
key_value
173+
and self._real_settings
174+
and getattr(self._real_settings, key) != key_value
175+
):
176+
raise ValueError(
177+
"You have both AZURE_{key} env variable and mgmt_settings_real.py for {key} to different values".format(
178+
key=key
179+
)
180+
)
156181

157182
if not key_value:
158183
try:
@@ -170,7 +195,6 @@ def set_value_to_scrub(self, key, default_value):
170195
else:
171196
return default_value
172197

173-
174198
def setUp(self):
175199
# Every test uses a different resource group name calculated from its
176200
# qualified test name.
@@ -194,35 +218,43 @@ def tearDown(self):
194218

195219
def get_credential(self, client_class, **kwargs):
196220

197-
tenant_id = os.environ.get("AZURE_TENANT_ID", getattr(self._real_settings, "TENANT_ID", None))
198-
client_id = os.environ.get("AZURE_CLIENT_ID", getattr(self._real_settings, "CLIENT_ID", None))
199-
secret = os.environ.get("AZURE_CLIENT_SECRET", getattr(self._real_settings, "CLIENT_SECRET", None))
221+
tenant_id = os.environ.get(
222+
"AZURE_TENANT_ID", getattr(self._real_settings, "TENANT_ID", None)
223+
)
224+
client_id = os.environ.get(
225+
"AZURE_CLIENT_ID", getattr(self._real_settings, "CLIENT_ID", None)
226+
)
227+
secret = os.environ.get(
228+
"AZURE_CLIENT_SECRET", getattr(self._real_settings, "CLIENT_SECRET", None)
229+
)
200230
is_async = kwargs.pop("is_async", False)
201231

202232
if tenant_id and client_id and secret and self.is_live:
203233
if _is_autorest_v3(client_class):
204234
# Create azure-identity class
205235
from azure.identity import ClientSecretCredential
236+
206237
if is_async:
207238
from azure.identity.aio import ClientSecretCredential
208239
return ClientSecretCredential(
209-
tenant_id=tenant_id,
210-
client_id=client_id,
211-
client_secret=secret
240+
tenant_id=tenant_id, client_id=client_id, client_secret=secret
212241
)
213242
else:
214243
# Create msrestazure class
215-
from msrestazure.azure_active_directory import ServicePrincipalCredentials
244+
from msrestazure.azure_active_directory import (
245+
ServicePrincipalCredentials,
246+
)
247+
216248
return ServicePrincipalCredentials(
217-
tenant=tenant_id,
218-
client_id=client_id,
219-
secret=secret
249+
tenant=tenant_id, client_id=client_id, secret=secret
220250
)
221251
else:
222252
if _is_autorest_v3(client_class):
223253
if is_async:
224254
if self.is_live:
225-
raise ValueError("Async live doesn't support mgmt_setting_real, please set AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET")
255+
raise ValueError(
256+
"Async live doesn't support mgmt_setting_real, please set AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET"
257+
)
226258
return AsyncFakeCredential()
227259
else:
228260
return self.settings.get_azure_core_credentials()
@@ -237,19 +269,15 @@ def create_client_from_credential(self, client_class, credential, **kwargs):
237269
# kwargs.setdefault("polling_interval", 0)
238270
if _is_autorest_v3(client_class):
239271
kwargs.setdefault("logging_enable", True)
240-
client = client_class(
241-
credential=credential,
242-
**kwargs
243-
)
272+
client = client_class(credential=credential, **kwargs)
244273
else:
245-
client = client_class(
246-
credentials=credential,
247-
**kwargs
248-
)
274+
client = client_class(credentials=credential, **kwargs)
249275

250276
if self.is_playback():
251277
try:
252-
client._config.polling_interval = 0 # FIXME in azure-mgmt-core, make this a kwargs
278+
client._config.polling_interval = (
279+
0 # FIXME in azure-mgmt-core, make this a kwargs
280+
)
253281
except AttributeError:
254282
pass
255283

@@ -281,18 +309,17 @@ def get_replayable_random_resource_name(self, name):
281309
"""In a replay scenario, (is not live) gives the static moniker. In the random scenario, gives generated name."""
282310
if self.is_live:
283311
created_name = self.create_random_name(name)
284-
self.scrubber.register_name_pair(
285-
created_name,
286-
name
287-
)
312+
self.scrubber.register_name_pair(created_name, name)
288313
return name
289314

290315
def get_preparer_resource_name(self, prefix):
291316
"""Random name generation for use by preparers.
292317
293318
If prefix is a blank string, use the fully qualified test name instead.
294319
This is what legacy tests do for resource groups."""
295-
return self.get_resource_name(prefix or self.qualified_test_name.replace('.', '_'))
320+
return self.get_resource_name(
321+
prefix or self.qualified_test_name.replace(".", "_")
322+
)
296323

297324
@staticmethod
298325
def await_prepared_test(test_fn):
@@ -308,6 +335,7 @@ def await_prepared_test(test_fn):
308335
raise ImportError("Async wrapper is not needed for Python 2.7 code.")
309336

310337
import asyncio
338+
311339
@functools.wraps(test_fn)
312340
def run(test_class_instance, *args, **kwargs):
313341
trim_kwargs_from_test_function(test_fn, kwargs)

0 commit comments

Comments
 (0)