From c7a74c1eba432e0dc18f6b0d028660b14589fc83 Mon Sep 17 00:00:00 2001 From: kyleknap Date: Mon, 25 Sep 2023 12:19:47 -0700 Subject: [PATCH] Port test refactoring for enumerating all services Upstream botocore PR: https://github.com/boto/botocore/pull/2986 --- tests/__init__.py | 7 +++--- .../botocore/test_context_params.py | 15 +----------- .../botocore/test_response_shadowing.py | 12 +--------- tests/utils/botocore/__init__.py | 23 +++++++++++++++++++ 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/tests/__init__.py b/tests/__init__.py index 19730acd9733..99508cb5e06b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -56,9 +56,10 @@ # Botocore testing utilities that we want to preserve import statements for # in botocore specific tests. from tests.utils.botocore import ( - assert_url_equal, create_session, random_chars, temporary_file, BaseEnvVar, - BaseSessionTest, BaseClientDriverTest, StubbedSession, ClientHTTPStubber, - SessionHTTPStubber, IntegerRefresher, FreezeTime, + assert_url_equal, create_session, random_chars, temporary_file, + patch_load_service_model, ALL_SERVICES, BaseEnvVar, BaseSessionTest, + BaseClientDriverTest, StubbedSession, ClientHTTPStubber, SessionHTTPStubber, + IntegerRefresher, FreezeTime, ) # S3transfer testing utilities that we want to preserve import statements for # in s3transfer specific tests. diff --git a/tests/functional/botocore/test_context_params.py b/tests/functional/botocore/test_context_params.py index f61e6a18fc53..833b67833760 100644 --- a/tests/functional/botocore/test_context_params.py +++ b/tests/functional/botocore/test_context_params.py @@ -14,7 +14,7 @@ import pytest from botocore.config import Config -from tests import ClientHTTPStubber, mock +from tests import ClientHTTPStubber, mock, patch_load_service_model # fake rulesets compatible with all fake service models below FAKE_RULESET_TEMPLATE = { @@ -226,19 +226,6 @@ } -def patch_load_service_model( - session, monkeypatch, service_model_json, ruleset_json -): - def mock_load_service_model(service_name, type_name, api_version=None): - if type_name == 'service-2': - return service_model_json - if type_name == 'endpoint-rule-set-1': - return ruleset_json - - loader = session.get_component('data_loader') - monkeypatch.setattr(loader, 'load_service_model', mock_load_service_model) - - @pytest.mark.parametrize( 'service_name,service_model,ruleset,call_should_include_ctx_param', [ diff --git a/tests/functional/botocore/test_response_shadowing.py b/tests/functional/botocore/test_response_shadowing.py index 924f87408b15..6a12ba8f774a 100644 --- a/tests/functional/botocore/test_response_shadowing.py +++ b/tests/functional/botocore/test_response_shadowing.py @@ -12,17 +12,7 @@ # language governing permissions and limitations under the License. import pytest -from botocore.session import Session - - -def _all_services(): - session = Session() - service_names = session.get_available_services() - return [session.get_service_model(name) for name in service_names] - - -# Only compute our service models once -ALL_SERVICES = _all_services() +from tests import ALL_SERVICES def _all_service_error_shapes(): diff --git a/tests/utils/botocore/__init__.py b/tests/utils/botocore/__init__.py index 964ec88232d7..9b8f205a4709 100644 --- a/tests/utils/botocore/__init__.py +++ b/tests/utils/botocore/__init__.py @@ -50,6 +50,16 @@ _LOADER = botocore.loaders.Loader() +def _all_services(): + session = botocore.session.Session() + service_names = session.get_available_services() + return [session.get_service_model(name) for name in service_names] + + +# Only compute our service models once +ALL_SERVICES = _all_services() + + def skip_unless_has_memory_collection(cls): """Class decorator to skip tests that require memory collection. @@ -568,3 +578,16 @@ def __enter__(self, *args, **kwargs): def __exit__(self, *args, **kwargs): self.datetime_patcher.stop() + + +def patch_load_service_model( + session, monkeypatch, service_model_json, ruleset_json +): + def mock_load_service_model(service_name, type_name, api_version=None): + if type_name == 'service-2': + return service_model_json + if type_name == 'endpoint-rule-set-1': + return ruleset_json + + loader = session.get_component('data_loader') + monkeypatch.setattr(loader, 'load_service_model', mock_load_service_model)