1
1
import asyncio
2
+ import gc
2
3
import unittest
3
4
4
5
@@ -90,11 +91,17 @@ async def on_cleanup(self):
90
91
91
92
events = []
92
93
test = Test ("test_func" )
93
- with self . assertRaises ( MyException ) :
94
+ try :
94
95
test .debug ()
96
+ except MyException :
97
+ pass
98
+ else :
99
+ self .fail ('Expected a MyException exception' )
95
100
self .assertEqual (events , ['asyncSetUp' ])
96
101
test .doCleanups ()
97
102
self .assertEqual (events , ['asyncSetUp' ])
103
+ del test
104
+ gc .collect ()
98
105
99
106
def test_exception_in_test (self ):
100
107
class Test (unittest .IsolatedAsyncioTestCase ):
@@ -121,11 +128,17 @@ async def on_cleanup(self):
121
128
122
129
events = []
123
130
test = Test ("test_func" )
124
- with self . assertRaises ( MyException ) :
131
+ try :
125
132
test .debug ()
133
+ except MyException :
134
+ pass
135
+ else :
136
+ self .fail ('Expected a MyException exception' )
126
137
self .assertEqual (events , ['asyncSetUp' , 'test' ])
127
138
test .doCleanups ()
128
139
self .assertEqual (events , ['asyncSetUp' , 'test' ])
140
+ del test
141
+ gc .collect ()
129
142
130
143
def test_exception_in_test_after_adding_cleanup (self ):
131
144
class Test (unittest .IsolatedAsyncioTestCase ):
@@ -152,11 +165,17 @@ async def on_cleanup(self):
152
165
153
166
events = []
154
167
test = Test ("test_func" )
155
- with self . assertRaises ( MyException ) :
168
+ try :
156
169
test .debug ()
170
+ except MyException :
171
+ pass
172
+ else :
173
+ self .fail ('Expected a MyException exception' )
157
174
self .assertEqual (events , ['asyncSetUp' , 'test' ])
158
175
test .doCleanups ()
159
176
self .assertEqual (events , ['asyncSetUp' , 'test' , 'cleanup' ])
177
+ del test
178
+ gc .collect ()
160
179
161
180
def test_exception_in_tear_down (self ):
162
181
class Test (unittest .IsolatedAsyncioTestCase ):
@@ -183,12 +202,17 @@ async def on_cleanup(self):
183
202
184
203
events = []
185
204
test = Test ("test_func" )
186
- with self . assertRaises ( MyException ) :
205
+ try :
187
206
test .debug ()
207
+ except MyException :
208
+ pass
209
+ else :
210
+ self .fail ('Expected a MyException exception' )
188
211
self .assertEqual (events , ['asyncSetUp' , 'test' , 'asyncTearDown' ])
189
212
test .doCleanups ()
190
213
self .assertEqual (events , ['asyncSetUp' , 'test' , 'asyncTearDown' , 'cleanup' ])
191
-
214
+ del test
215
+ gc .collect ()
192
216
193
217
def test_exception_in_tear_clean_up (self ):
194
218
class Test (unittest .IsolatedAsyncioTestCase ):
@@ -215,11 +239,17 @@ async def on_cleanup(self):
215
239
216
240
events = []
217
241
test = Test ("test_func" )
218
- with self . assertRaises ( MyException ) :
242
+ try :
219
243
test .debug ()
244
+ except MyException :
245
+ pass
246
+ else :
247
+ self .fail ('Expected a MyException exception' )
220
248
self .assertEqual (events , ['asyncSetUp' , 'test' , 'asyncTearDown' , 'cleanup' ])
221
249
test .doCleanups ()
222
250
self .assertEqual (events , ['asyncSetUp' , 'test' , 'asyncTearDown' , 'cleanup' ])
251
+ del test
252
+ gc .collect ()
223
253
224
254
def test_deprecation_of_return_val_from_test (self ):
225
255
# Issue 41322 - deprecate return of value!=None from a test
@@ -309,7 +339,51 @@ async def coro():
309
339
output = test .run ()
310
340
self .assertTrue (cancelled )
311
341
342
+ def test_debug_cleanup_same_loop (self ):
343
+ class Test (unittest .IsolatedAsyncioTestCase ):
344
+ async def asyncSetUp (self ):
345
+ async def coro ():
346
+ await asyncio .sleep (0 )
347
+ fut = asyncio .ensure_future (coro ())
348
+ self .addAsyncCleanup (self .cleanup , fut )
349
+ events .append ('asyncSetUp' )
350
+
351
+ async def test_func (self ):
352
+ events .append ('test' )
353
+ raise MyException ()
354
+
355
+ async def asyncTearDown (self ):
356
+ events .append ('asyncTearDown' )
357
+
358
+ async def cleanup (self , fut ):
359
+ try :
360
+ # Raises an exception if in different loop
361
+ await asyncio .wait ([fut ])
362
+ events .append ('cleanup' )
363
+ except :
364
+ import traceback
365
+ traceback .print_exc ()
366
+ raise
312
367
368
+ events = []
369
+ test = Test ("test_func" )
370
+ result = test .run ()
371
+ self .assertEqual (events , ['asyncSetUp' , 'test' , 'asyncTearDown' , 'cleanup' ])
372
+ self .assertIn ('MyException' , result .errors [0 ][1 ])
373
+
374
+ events = []
375
+ test = Test ("test_func" )
376
+ try :
377
+ test .debug ()
378
+ except MyException :
379
+ pass
380
+ else :
381
+ self .fail ('Expected a MyException exception' )
382
+ self .assertEqual (events , ['asyncSetUp' , 'test' ])
383
+ test .doCleanups ()
384
+ self .assertEqual (events , ['asyncSetUp' , 'test' , 'cleanup' ])
385
+ del test
386
+ gc .collect ()
313
387
314
388
315
389
if __name__ == "__main__" :
0 commit comments