@@ -2371,7 +2371,7 @@ def __init__(self):
23712371
23722372 def __del__ (self ):
23732373 self ._dummy .close ()
2374- if self .file :
2374+ if self .file is not None :
23752375 self .file .write ("done" )
23762376
23772377 def foo (self ):
@@ -2385,6 +2385,15 @@ def interp(self):
23852385 self .assertFalse (is_pickleable (obj ))
23862386 return obj
23872387
2388+ @contextlib .contextmanager
2389+ def share (self , obj , * , expect_proxy = True ):
2390+ with interpreters .share (obj ) as proxy :
2391+ self .assertTrue (_interpreters .is_shareable (proxy ))
2392+ if expect_proxy :
2393+ self .assertTrue (sys ._is_immortal (proxy ))
2394+ self .assertFalse (is_pickleable (proxy ))
2395+ yield proxy
2396+
23882397 def test_simple_proxy (self ):
23892398 interp = interpreters .create ()
23902399 try :
@@ -2395,10 +2404,7 @@ def get_unshareable(obj):
23952404 def get_interp (obj ):
23962405 return obj .interp ().id
23972406
2398- with interpreters .share (self .unshareable ()) as proxy :
2399- self .assertTrue (_interpreters .is_shareable (proxy ))
2400- self .assertTrue (sys ._is_immortal (proxy ))
2401- self .assertFalse (is_pickleable (proxy ))
2407+ with self .share (self .unshareable ()) as proxy :
24022408 self .assertEqual (interp .call (get_unshareable , proxy ), 24 )
24032409 self .assertEqual (interp .call (get_interp , proxy ), interpreters .get_current ().id )
24042410 finally :
@@ -2413,9 +2419,9 @@ def test_object_collected_after_proxy_closes(self):
24132419 def write_to_proxy (obj ):
24142420 obj .file .write ("hello" )
24152421
2416- with interpreters .share (self .unshareable (buffer )) as proxy :
2417- self .assertFalse (is_pickleable (proxy ))
2422+ with self .share (self .unshareable (buffer )) as proxy :
24182423 self .assertIsNone (interp .call (write_to_proxy , proxy ))
2424+ self .assertEqual (str (proxy .file ), buffer )
24192425
24202426 self .assertEqual (buffer .getvalue (), "hellodone" )
24212427 finally :
0 commit comments