@@ -179,116 +179,6 @@ public static void CrossDomainObject()
179
179
180
180
#endregion
181
181
182
- #region Tempary tests
183
-
184
- // https://github.com/pythonnet/pythonnet/pull/1074#issuecomment-596139665
185
- [ Test ]
186
- public void CrossReleaseBuiltinType ( )
187
- {
188
- void ExecTest ( )
189
- {
190
- try
191
- {
192
- PythonEngine . Initialize ( ) ;
193
- var numRef = CreateNumReference ( ) ;
194
- Assert . True ( numRef . IsAlive ) ;
195
- PythonEngine . Shutdown ( ) ; // <- "run" 1 ends
196
- PythonEngine . Initialize ( ) ; // <- "run" 2 starts
197
-
198
- GC . Collect ( ) ;
199
- GC . WaitForPendingFinalizers ( ) ; // <- this will put former `num` into Finalizer queue
200
- Finalizer . Instance . Collect ( ) ;
201
- // ^- this will call PyObject.Dispose, which will call XDecref on `num.Handle`,
202
- // but Python interpreter from "run" 1 is long gone, so it will corrupt memory instead.
203
- Assert . False ( numRef . IsAlive ) ;
204
- }
205
- finally
206
- {
207
- PythonEngine . Shutdown ( ) ;
208
- }
209
- }
210
-
211
- var errorArgs = new List < Finalizer . ErrorArgs > ( ) ;
212
- void ErrorHandler ( object sender , Finalizer . ErrorArgs e )
213
- {
214
- errorArgs . Add ( e ) ;
215
- }
216
- Finalizer . Instance . ErrorHandler += ErrorHandler ;
217
- try
218
- {
219
- for ( int i = 0 ; i < 10 ; i ++ )
220
- {
221
- ExecTest ( ) ;
222
- }
223
- }
224
- finally
225
- {
226
- Finalizer . Instance . ErrorHandler -= ErrorHandler ;
227
- }
228
- Assert . AreEqual ( errorArgs . Count , 0 ) ;
229
- }
230
-
231
- [ Test ]
232
- public void CrossReleaseCustomType ( )
233
- {
234
- void ExecTest ( )
235
- {
236
- try
237
- {
238
- PythonEngine . Initialize ( ) ;
239
- var objRef = CreateConcreateObject ( ) ;
240
- Assert . True ( objRef . IsAlive ) ;
241
- PythonEngine . Shutdown ( ) ; // <- "run" 1 ends
242
- PythonEngine . Initialize ( ) ; // <- "run" 2 starts
243
- GC . Collect ( ) ;
244
- GC . WaitForPendingFinalizers ( ) ;
245
- Finalizer . Instance . Collect ( ) ;
246
- Assert . False ( objRef . IsAlive ) ;
247
- }
248
- finally
249
- {
250
- PythonEngine . Shutdown ( ) ;
251
- }
252
- }
253
-
254
- var errorArgs = new List < Finalizer . ErrorArgs > ( ) ;
255
- void ErrorHandler ( object sender , Finalizer . ErrorArgs e )
256
- {
257
- errorArgs . Add ( e ) ;
258
- }
259
- Finalizer . Instance . ErrorHandler += ErrorHandler ;
260
- try
261
- {
262
- for ( int i = 0 ; i < 10 ; i ++ )
263
- {
264
- ExecTest ( ) ;
265
- }
266
- }
267
- finally
268
- {
269
- Finalizer . Instance . ErrorHandler -= ErrorHandler ;
270
- }
271
- Assert . AreEqual ( errorArgs . Count , 0 ) ;
272
- }
273
-
274
- private static WeakReference CreateNumReference ( )
275
- {
276
- var num = 3216757418 . ToPython ( ) ;
277
- Assert . AreEqual ( num . Refcount , 1 ) ;
278
- WeakReference numRef = new WeakReference ( num , false ) ;
279
- return numRef ;
280
- }
281
-
282
- private static WeakReference CreateConcreateObject ( )
283
- {
284
- var obj = new Domain . MyClass ( ) . ToPython ( ) ;
285
- Assert . AreEqual ( obj . Refcount , 1 ) ;
286
- WeakReference numRef = new WeakReference ( obj , false ) ;
287
- return numRef ;
288
- }
289
-
290
- #endregion Tempary tests
291
-
292
182
/// <summary>
293
183
/// This is a magic incantation required to run code in an application
294
184
/// domain other than the current one.
0 commit comments