mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Issue #11459: A bufsize value of 0 in subprocess.Popen() really creates
				
					
				
			unbuffered pipes, such that select() works properly on them.
This commit is contained in:
		
						commit
						1679f4daa1
					
				
					 6 changed files with 24 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -1315,6 +1315,22 @@ def test_wait_when_sigchild_ignored(self):
 | 
			
		|||
                         " non-zero with this error:\n%s" %
 | 
			
		||||
                         stderr.decode('utf-8'))
 | 
			
		||||
 | 
			
		||||
    def test_select_unbuffered(self):
 | 
			
		||||
        # Issue #11459: bufsize=0 should really set the pipes as
 | 
			
		||||
        # unbuffered (and therefore let select() work properly).
 | 
			
		||||
        select = support.import_module("select")
 | 
			
		||||
        p = subprocess.Popen([sys.executable, "-c",
 | 
			
		||||
                              'import sys;'
 | 
			
		||||
                              'sys.stdout.write("apple")'],
 | 
			
		||||
                             stdout=subprocess.PIPE,
 | 
			
		||||
                             bufsize=0)
 | 
			
		||||
        f = p.stdout
 | 
			
		||||
        try:
 | 
			
		||||
            self.assertEqual(f.read(4), b"appl")
 | 
			
		||||
            self.assertIn(f, select.select([f], [], [], 0.0)[0])
 | 
			
		||||
        finally:
 | 
			
		||||
            p.wait()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@unittest.skipUnless(mswindows, "Windows specific tests")
 | 
			
		||||
class Win32ProcessTestCase(BaseTestCase):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue