@@ -82,11 +82,13 @@ def _process_chunk(self, chunk):
8282
8383class _FailingSyncStopStreamWrapper (_TestSyncStreamWrapper ):
8484 def _stop_stream (self ):
85+ self .stop_count += 1
8586 raise ValueError ("instrumentation failed" )
8687
8788
8889class _FailingSyncFailStreamWrapper (_TestSyncStreamWrapper ):
8990 def _fail_stream (self , error ):
91+ self .failures .append (error )
9092 raise ValueError ("instrumentation failed" )
9193
9294
@@ -171,14 +173,22 @@ def test_sync_stream_wrapper_swallows_finalize_errors():
171173 wrapper = _FailingSyncStopStreamWrapper (_FakeSyncStream ())
172174
173175 wrapper .close ()
176+ wrapper .close ()
177+
178+ assert wrapper .stop_count == 1
174179
175180
176181def test_sync_stream_wrapper_swallows_failure_finalize_errors ():
177- error = RuntimeError ("close failure" )
178- wrapper = _FailingSyncFailStreamWrapper (_FakeSyncStream (close_error = error ))
182+ close_error = RuntimeError ("close failure" )
183+ stream = _FakeSyncStream (close_error = close_error )
184+ wrapper = _FailingSyncFailStreamWrapper (stream )
179185
180186 with pytest .raises (RuntimeError , match = "close failure" ):
181187 wrapper .close ()
188+ stream ._close_error = None
189+ wrapper .close ()
190+
191+ assert wrapper .failures == [close_error ]
182192
183193
184194def test_sync_stream_wrapper_swallows_stop_iteration_finalize_errors ():
@@ -267,11 +277,13 @@ def _process_chunk(self, chunk):
267277
268278class _FailingAsyncStopStreamWrapper (_TestAsyncStreamWrapper ):
269279 def _stop_stream (self ):
280+ self .stop_count += 1
270281 raise ValueError ("instrumentation failed" )
271282
272283
273284class _FailingAsyncFailStreamWrapper (_TestAsyncStreamWrapper ):
274285 def _fail_stream (self , error ):
286+ self .failures .append (error )
275287 raise ValueError ("instrumentation failed" )
276288
277289
@@ -371,20 +383,26 @@ def test_async_stream_wrapper_swallows_finalize_errors():
371383 async def exercise ():
372384 wrapper = _FailingAsyncStopStreamWrapper (_FakeAsyncStream ())
373385
386+ await wrapper .close ()
374387 await wrapper .close ()
375388
389+ assert wrapper .stop_count == 1
390+
376391 asyncio .run (exercise ())
377392
378393
379394def test_async_stream_wrapper_swallows_failure_finalize_errors ():
380395 async def exercise ():
381- error = RuntimeError ("close failure" )
382- wrapper = _FailingAsyncFailStreamWrapper (
383- _FakeAsyncStream (close_error = error )
384- )
396+ close_error = RuntimeError ("close failure" )
397+ stream = _FakeAsyncStream (close_error = close_error )
398+ wrapper = _FailingAsyncFailStreamWrapper (stream )
385399
386400 with pytest .raises (RuntimeError , match = "close failure" ):
387401 await wrapper .close ()
402+ stream ._close_error = None
403+ await wrapper .close ()
404+
405+ assert wrapper .failures == [close_error ]
388406
389407 asyncio .run (exercise ())
390408
0 commit comments