File tree Expand file tree Collapse file tree 1 file changed +15
-4
lines changed
testsuite/pytest_plugins/pytest_userver/plugins/grpc Expand file tree Collapse file tree 1 file changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -84,14 +84,25 @@ async def grpc_mockserver(grpc_mockserver_endpoint) -> grpc.aio.Server:
8484 """
8585 server = grpc .aio .server ()
8686 server .add_insecure_port (grpc_mockserver_endpoint )
87- server_task = asyncio . create_task ( server .start () )
87+ await server .start ()
8888
8989 try :
9090 yield server
9191 finally :
92- await asyncio .shield (server .stop (grace = None ))
93- await asyncio .shield (server .wait_for_termination ())
94- await asyncio .shield (server_task )
92+
93+ async def stop_server ():
94+ await server .stop (grace = None )
95+ await server .wait_for_termination ()
96+
97+ stop_server_task = asyncio .shield (asyncio .create_task (stop_server ()))
98+ # asyncio.shield does not protect our await from cancellations, and we
99+ # really need to wait for the server stopping before continuing.
100+ try :
101+ await stop_server_task
102+ except asyncio .CancelledError :
103+ await stop_server_task
104+ # Propagate cancellation when we are done
105+ raise
95106
96107
97108@pytest .fixture (scope = 'session' )
You can’t perform that action at this time.
0 commit comments