Skip to content

Commit a59c6f5

Browse files
authored
Fix: SimpleClient.call does not raise TimeoutError on timeout (#1501)
1 parent f61e0be commit a59c6f5

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

src/socketio/async_simple_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ async def call(self, event, data=None, timeout=60):
163163
return await self.client.call(event, data,
164164
namespace=self.namespace,
165165
timeout=timeout)
166+
except TimeoutError:
167+
raise
166168
except SocketIOError:
167169
pass
168170

src/socketio/simple_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ def call(self, event, data=None, timeout=60):
155155
try:
156156
return self.client.call(event, data, namespace=self.namespace,
157157
timeout=timeout)
158+
except TimeoutError:
159+
raise
158160
except SocketIOError:
159161
pass
160162

tests/async/test_simple_client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,17 @@ async def test_call_retries(self):
142142
client.client.call.assert_awaited_with('foo', 'bar', namespace='/',
143143
timeout=60)
144144

145+
async def test_call_timeout(self):
146+
client = AsyncSimpleClient()
147+
client.connected_event.set()
148+
client.connected = True
149+
client.client = mock.MagicMock()
150+
client.client.call = mock.AsyncMock()
151+
client.client.call.side_effect = TimeoutError()
152+
153+
with pytest.raises(TimeoutError):
154+
await client.call('foo', 'bar')
155+
145156
async def test_receive_with_input_buffer(self):
146157
client = AsyncSimpleClient()
147158
client.input_buffer = ['foo', 'bar']

tests/common/test_simple_client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,16 @@ def test_call_retries(self):
130130
client.client.call.assert_called_with('foo', 'bar', namespace='/',
131131
timeout=60)
132132

133+
def test_call_timeout(self):
134+
client = SimpleClient()
135+
client.connected_event.set()
136+
client.connected = True
137+
client.client = mock.MagicMock()
138+
client.client.call.side_effect = TimeoutError()
139+
140+
with pytest.raises(TimeoutError):
141+
client.call('foo', 'bar')
142+
133143
def test_receive_with_input_buffer(self):
134144
client = SimpleClient()
135145
client.input_buffer = ['foo', 'bar']

0 commit comments

Comments
 (0)