@@ -45,15 +45,16 @@ def __init__(
4545 )
4646
4747
48- def create_test_engine_adapters (
48+ def create_test_engine_adapters_for_tests (
4949 model_test_metadata : list [ModelTestMetadata ],
5050 config : C ,
5151 default_gateway : str ,
52- testing_adapter_by_gateway : t .Dict [str , EngineAdapter ],
5352 default_catalog : str | None = None ,
5453 default_catalog_dialect : str = "" ,
55- ) -> list [EngineAdapter ]:
56- engine_adapters = []
54+ ) -> t .Dict [ModelTestMetadata , EngineAdapter ]:
55+ testing_adapter_by_gateway : t .Dict [str , EngineAdapter ] = {}
56+ metadata_to_adapter = {}
57+
5758 for metadata in model_test_metadata :
5859 gateway = metadata .body .get ("gateway" ) or default_gateway
5960 test_connection = config .get_test_connection (
@@ -76,9 +77,9 @@ def create_test_engine_adapters(
7677 register_comments_override = False
7778 )
7879
79- engine_adapters . append ( adapter or testing_adapter_by_gateway [gateway ])
80+ metadata_to_adapter [ metadata ] = adapter or testing_adapter_by_gateway [gateway ]
8081
81- return engine_adapters
82+ return metadata_to_adapter
8283
8384
8485def run_tests (
@@ -101,7 +102,6 @@ def run_tests(
101102 verbosity: The verbosity level.
102103 preserve_fixtures: Preserve the fixture tables in the testing database, useful for debugging.
103104 """
104- testing_adapter_by_gateway : t .Dict [str , EngineAdapter ] = {}
105105 default_gateway = gateway or config .default_gateway_name
106106
107107 default_test_connection = config .get_test_connection (
@@ -118,13 +118,12 @@ def run_tests(
118118 descriptions = True ,
119119 )
120120
121- engine_adapters = create_test_engine_adapters (
122- model_test_metadata ,
123- config ,
124- default_gateway ,
125- testing_adapter_by_gateway ,
126- default_catalog ,
127- default_catalog_dialect ,
121+ metadata_to_adapter = create_test_engine_adapters_for_tests (
122+ model_test_metadata = model_test_metadata ,
123+ config = config ,
124+ default_gateway = default_gateway ,
125+ default_catalog = default_catalog ,
126+ default_catalog_dialect = default_catalog_dialect ,
128127 )
129128
130129 def _run_single_test (
@@ -168,20 +167,16 @@ def _run_single_test(
168167 with ThreadPoolExecutor (max_workers = num_workers ) as pool :
169168 futures = [
170169 pool .submit (_run_single_test , metadata = metadata , engine_adapter = engine_adapter )
171- for metadata , engine_adapter in zip ( model_test_metadata , engine_adapters )
170+ for metadata , engine_adapter in metadata_to_adapter . items ( )
172171 ]
173172
174173 for future in concurrent .futures .as_completed (futures ):
175174 test_results .append (future .result ())
176175 finally :
177- closed_adapters : t .Set [int ] = set ()
178-
179- for engine_adapter in engine_adapters :
176+ for engine_adapter in set (metadata_to_adapter .values ()):
180177 # The engine adapters list might have duplicates, so we ensure that we close each adapter once
181- hashed_adapter = hash (engine_adapter )
182- if engine_adapter and hashed_adapter not in closed_adapters :
178+ if engine_adapter :
183179 engine_adapter .close ()
184- closed_adapters .add (hashed_adapter )
185180
186181 end_time = time .perf_counter ()
187182
0 commit comments