Skip to content

Commit 8f20925

Browse files
committed
tests: fix test_socket_manager.py with PyPy
This is basically reapplying 0ad4db8 which was removed in 49b74ca. Without this patch, we got: ``` platform linux -- Python 3.10.14[pypy-7.3.17-final], pytest-8.3.4, pluggy-1.5.0 […] FAILED supervisor/tests/test_socket_manager.py::ProxyTest::test_on_delete - AssertionError: False is not true FAILED supervisor/tests/test_socket_manager.py::SocketManagerTest::test_logging - AssertionError: 1 != 2 FAILED supervisor/tests/test_socket_manager.py::SocketManagerTest::test_socket_lifecycle - AssertionError: True is not false FAILED supervisor/tests/test_socket_manager.py::SocketManagerTest::test_tcp_w_hostname - OSError: [Errno 98] Address already in use FAILED supervisor/tests/test_socket_manager.py::SocketManagerTest::test_tcp_w_ip - OSError: [Errno 98] Address already in use ```
1 parent 45da211 commit 8f20925

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

supervisor/tests/test_socket_manager.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Test suite for supervisor.socket_manager"""
22

3+
import gc
34
import os
45
import unittest
56
import socket
@@ -49,6 +50,7 @@ def test_on_delete(self):
4950
proxy = self._makeOne(Subject(), on_delete=self.setOnDeleteCalled)
5051
self.assertEqual(5, proxy.getValue())
5152
proxy = None
53+
gc_collect()
5254
self.assertTrue(self.on_deleteCalled)
5355

5456
class ReferenceCounterTest(unittest.TestCase):
@@ -91,6 +93,9 @@ def test_decr_at_zero_raises_error(self):
9193

9294
class SocketManagerTest(unittest.TestCase):
9395

96+
def tearDown(self):
97+
gc_collect()
98+
9499
def _getTargetClass(self):
95100
from supervisor.socket_manager import SocketManager
96101
return SocketManager
@@ -154,10 +159,12 @@ def test_socket_lifecycle(self):
154159
self.assertTrue(sock_manager.is_prepared())
155160
self.assertFalse(sock_manager.socket.close_called)
156161
sock = None
162+
gc_collect()
157163
# Socket not actually closed yet b/c ref ct is 1
158164
self.assertTrue(sock_manager.is_prepared())
159165
self.assertFalse(sock_manager.socket.close_called)
160166
sock2 = None
167+
gc_collect()
161168
# Socket closed
162169
self.assertFalse(sock_manager.is_prepared())
163170
self.assertTrue(sock_manager.socket.close_called)
@@ -170,6 +177,7 @@ def test_socket_lifecycle(self):
170177
self.assertNotEqual(sock_id, sock3_id)
171178
# Drop ref ct to zero
172179
del sock3
180+
gc_collect()
173181
# Now assert that socket is closed
174182
self.assertFalse(sock_manager.is_prepared())
175183
self.assertTrue(sock_manager.socket.close_called)
@@ -184,6 +192,7 @@ def test_logging(self):
184192
self.assertEqual('Creating socket %s' % repr(conf), logger.data[0])
185193
# socket close
186194
del sock
195+
gc_collect()
187196
self.assertEqual(len(logger.data), 2)
188197
self.assertEqual('Closing socket %s' % repr(conf), logger.data[1])
189198

@@ -232,3 +241,9 @@ def test_close_requires_prepared_socket(self):
232241
self.fail()
233242
except Exception as e:
234243
self.assertEqual(e.args[0], 'Socket has not been prepared')
244+
245+
def gc_collect():
246+
if __pypy__ is not None:
247+
gc.collect()
248+
gc.collect()
249+
gc.collect()

0 commit comments

Comments
 (0)