File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ import  test .support 
2+ from  test .support .script_helper  import  assert_python_failure , assert_python_ok 
3+ import  textwrap 
4+ import  unittest 
5+ 
6+ 
7+ 
8+ 
9+ @test .support .cpython_only  
10+ class  PySysGetAttrTest (unittest .TestCase ):
11+ 
12+ 
13+     def  test_changing_stdout_from_thread (self ):
14+         # print should use strong reference to the stdout. 
15+         code  =  textwrap .dedent (''' 
16+             from contextlib import redirect_stdout 
17+             from io import StringIO 
18+             from threading import Thread 
19+             import time 
20+ 
21+             class Foo: 
22+                 def __repr__(self): 
23+                     time.sleep(0.2) 
24+                     return "Foo" 
25+ 
26+ 
27+             def thread1(): 
28+                 text = StringIO() 
29+                 with redirect_stdout(text): 
30+                     time.sleep(0.2) 
31+ 
32+             def main(): 
33+                 t1 = Thread(target=thread1, args=()) 
34+                 t1.start() 
35+                 time.sleep(0.1) 
36+                 print(Foo()) 
37+ 
38+ 
39+             if __name__ == "__main__": 
40+                 main() 
41+         ''' )
42+         rc , out , err  =  assert_python_ok ('-c' , code )
43+         self .assertEqual (out , b"" )
44+         self .assertEqual (err , b"" )
45+ 
46+ if  __name__  ==  "__main__" :
47+     unittest .main ()
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments