mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 07:01:21 +00:00 
			
		
		
		
	Issue #23243: Close explicitly event loops in asyncio tests
This commit is contained in:
		
							parent
							
								
									41ed958ee6
								
							
						
					
					
						commit
						33cb0396e8
					
				
					 3 changed files with 20 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -590,6 +590,7 @@ def default_exception_handler(self, context):
 | 
			
		|||
                raise ValueError('spam')
 | 
			
		||||
 | 
			
		||||
        loop = Loop()
 | 
			
		||||
        self.addCleanup(loop.close)
 | 
			
		||||
        asyncio.set_event_loop(loop)
 | 
			
		||||
 | 
			
		||||
        def run_loop():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@ class ProactorSocketTransportTests(test_utils.TestCase):
 | 
			
		|||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        self.loop = self.new_test_loop()
 | 
			
		||||
        self.addCleanup(self.loop.close)
 | 
			
		||||
        self.proactor = mock.Mock()
 | 
			
		||||
        self.loop._proactor = self.proactor
 | 
			
		||||
        self.protocol = test_utils.make_test_protocol(asyncio.Protocol)
 | 
			
		||||
| 
						 | 
				
			
			@ -459,6 +460,9 @@ def test_close_self_pipe(self):
 | 
			
		|||
        self.assertIsNone(self.loop._ssock)
 | 
			
		||||
        self.assertIsNone(self.loop._csock)
 | 
			
		||||
 | 
			
		||||
        # Don't call close(): _close_self_pipe() cannot be called twice
 | 
			
		||||
        self.loop._closed = True
 | 
			
		||||
 | 
			
		||||
    def test_close(self):
 | 
			
		||||
        self.loop._close_self_pipe = mock.Mock()
 | 
			
		||||
        self.loop.close()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,11 @@
 | 
			
		|||
 | 
			
		||||
class TestBaseSelectorEventLoop(BaseSelectorEventLoop):
 | 
			
		||||
 | 
			
		||||
    def close(self):
 | 
			
		||||
        # Don't call the close() method of the parent class, because the
 | 
			
		||||
        # selector is mocked
 | 
			
		||||
        self._closed = True
 | 
			
		||||
 | 
			
		||||
    def _make_self_pipe(self):
 | 
			
		||||
        self._ssock = mock.Mock()
 | 
			
		||||
        self._csock = mock.Mock()
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +45,7 @@ def setUp(self):
 | 
			
		|||
        self.selector = mock.Mock()
 | 
			
		||||
        self.selector.select.return_value = []
 | 
			
		||||
        self.loop = TestBaseSelectorEventLoop(self.selector)
 | 
			
		||||
        self.set_event_loop(self.loop, cleanup=False)
 | 
			
		||||
        self.set_event_loop(self.loop)
 | 
			
		||||
 | 
			
		||||
    def test_make_socket_transport(self):
 | 
			
		||||
        m = mock.Mock()
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +81,15 @@ def test_make_ssl_transport_without_ssl_error(self):
 | 
			
		|||
            self.loop._make_ssl_transport(m, m, m, m)
 | 
			
		||||
 | 
			
		||||
    def test_close(self):
 | 
			
		||||
        class EventLoop(BaseSelectorEventLoop):
 | 
			
		||||
            def _make_self_pipe(self):
 | 
			
		||||
                self._ssock = mock.Mock()
 | 
			
		||||
                self._csock = mock.Mock()
 | 
			
		||||
                self._internal_fds += 1
 | 
			
		||||
 | 
			
		||||
        self.loop = EventLoop(self.selector)
 | 
			
		||||
        self.set_event_loop(self.loop)
 | 
			
		||||
 | 
			
		||||
        ssock = self.loop._ssock
 | 
			
		||||
        ssock.fileno.return_value = 7
 | 
			
		||||
        csock = self.loop._csock
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue