Skip to content

Commit 9594816

Browse files
bpo-23819: Get rid of assert statements in test_asyncio (GH-30212) (GH-30213)
To keep checks even if run tests with optimized Python. Either use special assertion methods like assertEqual() or raise an AssertionError explicitly. (cherry picked from commit 6ca78af) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 0c0bd78 commit 9594816

File tree

10 files changed

+102
-63
lines changed

10 files changed

+102
-63
lines changed

Lib/test/test_asyncio/test_base_events.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ def run_loop():
643643
'Exception in callback.*zero'),
644644
exc_info=(ZeroDivisionError, MOCK_ANY, MOCK_ANY))
645645

646-
assert not mock_handler.called
646+
self.assertFalse(mock_handler.called)
647647

648648
def test_set_exc_handler_broken(self):
649649
def run_loop():
@@ -1003,22 +1003,26 @@ def __init__(self, create_future=False):
10031003
if create_future:
10041004
self.done = asyncio.get_running_loop().create_future()
10051005

1006+
def _assert_state(self, *expected):
1007+
if self.state not in expected:
1008+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
1009+
10061010
def connection_made(self, transport):
10071011
self.transport = transport
1008-
assert self.state == 'INITIAL', self.state
1012+
self._assert_state('INITIAL')
10091013
self.state = 'CONNECTED'
10101014
transport.write(b'GET / HTTP/1.0\r\nHost: example.com\r\n\r\n')
10111015

10121016
def data_received(self, data):
1013-
assert self.state == 'CONNECTED', self.state
1017+
self._assert_state('CONNECTED')
10141018
self.nbytes += len(data)
10151019

10161020
def eof_received(self):
1017-
assert self.state == 'CONNECTED', self.state
1021+
self._assert_state('CONNECTED')
10181022
self.state = 'EOF'
10191023

10201024
def connection_lost(self, exc):
1021-
assert self.state in ('CONNECTED', 'EOF'), self.state
1025+
self._assert_state('CONNECTED', 'EOF')
10221026
self.state = 'CLOSED'
10231027
if self.done:
10241028
self.done.set_result(None)
@@ -1033,20 +1037,24 @@ def __init__(self, create_future=False, loop=None):
10331037
if create_future:
10341038
self.done = loop.create_future()
10351039

1040+
def _assert_state(self, expected):
1041+
if self.state != expected:
1042+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
1043+
10361044
def connection_made(self, transport):
10371045
self.transport = transport
1038-
assert self.state == 'INITIAL', self.state
1046+
self._assert_state('INITIAL')
10391047
self.state = 'INITIALIZED'
10401048

10411049
def datagram_received(self, data, addr):
1042-
assert self.state == 'INITIALIZED', self.state
1050+
self._assert_state('INITIALIZED')
10431051
self.nbytes += len(data)
10441052

10451053
def error_received(self, exc):
1046-
assert self.state == 'INITIALIZED', self.state
1054+
self._assert_state('INITIALIZED')
10471055

10481056
def connection_lost(self, exc):
1049-
assert self.state == 'INITIALIZED', self.state
1057+
self._assert_state('INITIALIZED')
10501058
self.state = 'CLOSED'
10511059
if self.done:
10521060
self.done.set_result(None)
@@ -1395,7 +1403,7 @@ def test_create_connection_bluetooth(self, m_socket):
13951403
addr = ('00:01:02:03:04:05', 1)
13961404

13971405
def getaddrinfo(host, port, *args, **kw):
1398-
assert (host, port) == addr
1406+
self.assertEqual((host, port), addr)
13991407
return [(999, 1, 999, '', (addr, 1))]
14001408

14011409
m_socket.getaddrinfo = getaddrinfo
@@ -1694,7 +1702,7 @@ def test_create_datagram_endpoint_sock_unix(self):
16941702
lambda: MyDatagramProto(create_future=True, loop=self.loop),
16951703
family=socket.AF_UNIX)
16961704
transport, protocol = self.loop.run_until_complete(fut)
1697-
assert transport._sock.family == socket.AF_UNIX
1705+
self.assertEqual(transport._sock.family, socket.AF_UNIX)
16981706
transport.close()
16991707
self.loop.run_until_complete(protocol.done)
17001708
self.assertEqual('CLOSED', protocol.state)

Lib/test/test_asyncio/test_events.py

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,27 @@ def __init__(self, loop=None):
8787
self.connected = loop.create_future()
8888
self.done = loop.create_future()
8989

90+
def _assert_state(self, *expected):
91+
if self.state not in expected:
92+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
93+
9094
def connection_made(self, transport):
9195
self.transport = transport
92-
assert self.state == 'INITIAL', self.state
96+
self._assert_state('INITIAL')
9397
self.state = 'CONNECTED'
9498
if self.connected:
9599
self.connected.set_result(None)
96100

97101
def data_received(self, data):
98-
assert self.state == 'CONNECTED', self.state
102+
self._assert_state('CONNECTED')
99103
self.nbytes += len(data)
100104

101105
def eof_received(self):
102-
assert self.state == 'CONNECTED', self.state
106+
self._assert_state('CONNECTED')
103107
self.state = 'EOF'
104108

105109
def connection_lost(self, exc):
106-
assert self.state in ('CONNECTED', 'EOF'), self.state
110+
self._assert_state('CONNECTED', 'EOF')
107111
self.state = 'CLOSED'
108112
if self.done:
109113
self.done.set_result(None)
@@ -124,20 +128,24 @@ def __init__(self, loop=None):
124128
if loop is not None:
125129
self.done = loop.create_future()
126130

131+
def _assert_state(self, expected):
132+
if self.state != expected:
133+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
134+
127135
def connection_made(self, transport):
128136
self.transport = transport
129-
assert self.state == 'INITIAL', self.state
137+
self._assert_state('INITIAL')
130138
self.state = 'INITIALIZED'
131139

132140
def datagram_received(self, data, addr):
133-
assert self.state == 'INITIALIZED', self.state
141+
self._assert_state('INITIALIZED')
134142
self.nbytes += len(data)
135143

136144
def error_received(self, exc):
137-
assert self.state == 'INITIALIZED', self.state
145+
self._assert_state('INITIALIZED')
138146

139147
def connection_lost(self, exc):
140-
assert self.state == 'INITIALIZED', self.state
148+
self._assert_state('INITIALIZED')
141149
self.state = 'CLOSED'
142150
if self.done:
143151
self.done.set_result(None)
@@ -153,23 +161,27 @@ def __init__(self, loop=None):
153161
if loop is not None:
154162
self.done = loop.create_future()
155163

164+
def _assert_state(self, expected):
165+
if self.state != expected:
166+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
167+
156168
def connection_made(self, transport):
157169
self.transport = transport
158-
assert self.state == ['INITIAL'], self.state
170+
self._assert_state(['INITIAL'])
159171
self.state.append('CONNECTED')
160172

161173
def data_received(self, data):
162-
assert self.state == ['INITIAL', 'CONNECTED'], self.state
174+
self._assert_state(['INITIAL', 'CONNECTED'])
163175
self.nbytes += len(data)
164176

165177
def eof_received(self):
166-
assert self.state == ['INITIAL', 'CONNECTED'], self.state
178+
self._assert_state(['INITIAL', 'CONNECTED'])
167179
self.state.append('EOF')
168180

169181
def connection_lost(self, exc):
170182
if 'EOF' not in self.state:
171183
self.state.append('EOF') # It is okay if EOF is missed.
172-
assert self.state == ['INITIAL', 'CONNECTED', 'EOF'], self.state
184+
self._assert_state(['INITIAL', 'CONNECTED', 'EOF'])
173185
self.state.append('CLOSED')
174186
if self.done:
175187
self.done.set_result(None)
@@ -184,13 +196,17 @@ def __init__(self, loop=None):
184196
if loop is not None:
185197
self.done = loop.create_future()
186198

199+
def _assert_state(self, expected):
200+
if self.state != expected:
201+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
202+
187203
def connection_made(self, transport):
188204
self.transport = transport
189-
assert self.state == 'INITIAL', self.state
205+
self._assert_state('INITIAL')
190206
self.state = 'CONNECTED'
191207

192208
def connection_lost(self, exc):
193-
assert self.state == 'CONNECTED', self.state
209+
self._assert_state('CONNECTED')
194210
self.state = 'CLOSED'
195211
if self.done:
196212
self.done.set_result(None)
@@ -209,31 +225,35 @@ def __init__(self, loop):
209225
self.got_data = {1: asyncio.Event(),
210226
2: asyncio.Event()}
211227

228+
def _assert_state(self, expected):
229+
if self.state != expected:
230+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
231+
212232
def connection_made(self, transport):
213233
self.transport = transport
214-
assert self.state == 'INITIAL', self.state
234+
self._assert_state('INITIAL')
215235
self.state = 'CONNECTED'
216236
self.connected.set_result(None)
217237

218238
def connection_lost(self, exc):
219-
assert self.state == 'CONNECTED', self.state
239+
self._assert_state('CONNECTED')
220240
self.state = 'CLOSED'
221241
self.completed.set_result(None)
222242

223243
def pipe_data_received(self, fd, data):
224-
assert self.state == 'CONNECTED', self.state
244+
self._assert_state('CONNECTED')
225245
self.data[fd] += data
226246
self.got_data[fd].set()
227247

228248
def pipe_connection_lost(self, fd, exc):
229-
assert self.state == 'CONNECTED', self.state
249+
self._assert_state('CONNECTED')
230250
if exc:
231251
self.disconnects[fd].set_exception(exc)
232252
else:
233253
self.disconnects[fd].set_result(exc)
234254

235255
def process_exited(self):
236-
assert self.state == 'CONNECTED', self.state
256+
self._assert_state('CONNECTED')
237257
self.returncode = self.transport.get_returncode()
238258

239259

@@ -1283,7 +1303,7 @@ def test_create_datagram_endpoint_sock(self):
12831303
else:
12841304
break
12851305
else:
1286-
assert False, 'Can not create socket.'
1306+
self.fail('Can not create socket.')
12871307

12881308
f = self.loop.create_datagram_endpoint(
12891309
lambda: MyDatagramProto(loop=self.loop), sock=sock)

Lib/test/test_asyncio/test_futures.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,30 @@ def done(self):
5454
or self.__exception is not None)
5555

5656
def result(self):
57-
assert not self.cancelled()
57+
self.assertFalse(self.cancelled())
5858
if self.__exception is not None:
5959
raise self.__exception
6060
return self.__result
6161

6262
def exception(self):
63-
assert not self.cancelled()
63+
self.assertFalse(self.cancelled())
6464
return self.__exception
6565

6666
def set_result(self, result):
67-
assert not self.done()
68-
assert result is not None
67+
self.assertFalse(self.done())
68+
self.assertIsNotNone(result)
6969
self.__result = result
7070

7171
def set_exception(self, exception):
72-
assert not self.done()
73-
assert exception is not None
72+
self.assertFalse(self.done())
73+
self.assertIsNotNone(exception)
7474
self.__exception = exception
7575

7676
def __iter__(self):
7777
if not self.done():
7878
self._asyncio_future_blocking = True
7979
yield self
80-
assert self.done()
80+
self.assertTrue(self.done())
8181
return self.result()
8282

8383

@@ -91,12 +91,12 @@ def setUp(self):
9191
def test_wrap_future(self):
9292
f = DuckFuture()
9393
g = asyncio.wrap_future(f)
94-
assert g is f
94+
self.assertIs(g, f)
9595

9696
def test_ensure_future(self):
9797
f = DuckFuture()
9898
g = asyncio.ensure_future(f)
99-
assert g is f
99+
self.assertIs(g, f)
100100

101101

102102
class BaseFutureTests:

Lib/test/test_asyncio/test_sendfile.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,29 @@ def __init__(self, loop=None, close_after=0):
3636
self.data = bytearray()
3737
self.close_after = close_after
3838

39+
def _assert_state(self, *expected):
40+
if self.state not in expected:
41+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
42+
3943
def connection_made(self, transport):
4044
self.transport = transport
41-
assert self.state == 'INITIAL', self.state
45+
self._assert_state('INITIAL')
4246
self.state = 'CONNECTED'
4347
if self.connected:
4448
self.connected.set_result(None)
4549

4650
def eof_received(self):
47-
assert self.state == 'CONNECTED', self.state
51+
self._assert_state('CONNECTED')
4852
self.state = 'EOF'
4953

5054
def connection_lost(self, exc):
51-
assert self.state in ('CONNECTED', 'EOF'), self.state
55+
self._assert_state('CONNECTED', 'EOF')
5256
self.state = 'CLOSED'
5357
if self.done:
5458
self.done.set_result(None)
5559

5660
def data_received(self, data):
57-
assert self.state == 'CONNECTED', self.state
61+
self._assert_state('CONNECTED')
5862
self.nbytes += len(data)
5963
self.data.extend(data)
6064
super().data_received(data)

Lib/test/test_asyncio/test_sock_lowlevel.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,28 @@ def __init__(self, loop=None):
2323
self.connected = loop.create_future()
2424
self.done = loop.create_future()
2525

26+
def _assert_state(self, *expected):
27+
if self.state not in expected:
28+
raise AssertionError(f'state: {self.state!r}, expected: {expected!r}')
29+
2630
def connection_made(self, transport):
2731
self.transport = transport
28-
assert self.state == 'INITIAL', self.state
32+
self._assert_state('INITIAL')
2933
self.state = 'CONNECTED'
3034
if self.connected:
3135
self.connected.set_result(None)
3236
transport.write(b'GET / HTTP/1.0\r\nHost: example.com\r\n\r\n')
3337

3438
def data_received(self, data):
35-
assert self.state == 'CONNECTED', self.state
39+
self._assert_state('CONNECTED')
3640
self.nbytes += len(data)
3741

3842
def eof_received(self):
39-
assert self.state == 'CONNECTED', self.state
43+
self._assert_state('CONNECTED')
4044
self.state = 'EOF'
4145

4246
def connection_lost(self, exc):
43-
assert self.state in ('CONNECTED', 'EOF'), self.state
47+
self._assert_state('CONNECTED', 'EOF')
4448
self.state = 'CLOSED'
4549
if self.done:
4650
self.done.set_result(None)
@@ -451,7 +455,7 @@ def test_create_connection_sock(self):
451455
else:
452456
break
453457
else:
454-
assert False, 'Can not create socket.'
458+
self.fail('Can not create socket.')
455459

456460
f = self.loop.create_connection(
457461
lambda: MyProto(loop=self.loop), sock=sock)

Lib/test/test_asyncio/test_sslproto.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,9 @@ def connection_made(self, tr):
383383
def get_buffer(self, sizehint):
384384
return self.buf
385385

386-
def buffer_updated(self, nsize):
387-
assert nsize == 1
388-
self.on_data.set_result(bytes(self.buf[:nsize]))
386+
def buffer_updated(slf, nsize):
387+
self.assertEqual(nsize, 1)
388+
slf.on_data.set_result(bytes(slf.buf[:nsize]))
389389

390390
class ClientProtoSecond(asyncio.Protocol):
391391
def __init__(self, on_data, on_eof):

0 commit comments

Comments
 (0)