@@ -280,7 +280,12 @@ void ExecTest()
280
280
{
281
281
try
282
282
{
283
+ PythonEngine . Initialize ( ) ;
283
284
var numRef = CreateNumReference ( ) ;
285
+ PythonEngine . Shutdown ( ) ; // <- "run" 1 ends
286
+ PythonEngine . Initialize ( ) ; // <- "run" 2 starts
287
+ Assert . True ( numRef . IsAlive ) ;
288
+
284
289
GC . Collect ( ) ;
285
290
GC . WaitForPendingFinalizers ( ) ; // <- this will put former `num` into Finalizer queue
286
291
Finalizer . Instance . Collect ( forceDispose : true ) ;
@@ -321,7 +326,11 @@ void ExecTest()
321
326
{
322
327
try
323
328
{
329
+ PythonEngine . Initialize ( ) ;
324
330
var objRef = CreateConcreateObject ( ) ;
331
+ PythonEngine . Shutdown ( ) ; // <- "run" 1 ends
332
+ PythonEngine . Initialize ( ) ; // <- "run" 2 starts
333
+ Assert . True ( objRef . IsAlive ) ;
325
334
GC . Collect ( ) ;
326
335
GC . WaitForPendingFinalizers ( ) ;
327
336
Finalizer . Instance . Collect ( forceDispose : true ) ;
@@ -355,25 +364,17 @@ void ErrorHandler(object sender, Finalizer.ErrorArgs e)
355
364
356
365
private static WeakReference CreateNumReference ( )
357
366
{
358
- PythonEngine . Initialize ( ) ;
359
367
var num = 3216757418 . ToPython ( ) ;
360
368
Assert . AreEqual ( num . Refcount , 1 ) ;
361
369
WeakReference numRef = new WeakReference ( num , false ) ;
362
- PythonEngine . Shutdown ( ) ; // <- "run" 1 ends
363
- PythonEngine . Initialize ( ) ; // <- "run" 2 starts
364
- num = null ;
365
370
return numRef ;
366
371
}
367
372
368
373
private static WeakReference CreateConcreateObject ( )
369
374
{
370
- PythonEngine . Initialize ( ) ;
371
375
var obj = new Domain . MyClass ( ) . ToPython ( ) ;
372
376
Assert . AreEqual ( obj . Refcount , 1 ) ;
373
377
WeakReference numRef = new WeakReference ( obj , false ) ;
374
- PythonEngine . Shutdown ( ) ;
375
- PythonEngine . Initialize ( ) ;
376
- obj = null ;
377
378
return numRef ;
378
379
}
379
380
0 commit comments