Merged revisions 88484 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r88484 | antoine.pitrou | 2011-02-21 22:55:48 +0100 (lun., 21 févr. 2011) | 4 lines

  Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due
  to open door files.
........
This commit is contained in:
Antoine Pitrou 2011-02-21 21:58:42 +00:00
parent a16b05b317
commit a47c25d74f
3 changed files with 18 additions and 19 deletions

View File

@ -3,22 +3,22 @@ file descriptors on stdout."""
import errno
import os
import fcntl
try:
_MAXFD = os.sysconf("SC_OPEN_MAX")
except:
_MAXFD = 256
def isopen(fd):
"""Return True if the fd is open, and False otherwise"""
try:
fcntl.fcntl(fd, fcntl.F_GETFD, 0)
except IOError as e:
if e.errno == errno.EBADF:
return False
raise
return True
if __name__ == "__main__":
print(','.join(str(fd) for fd in range(0, _MAXFD) if isopen(fd)))
fds = []
for fd in range(0, _MAXFD):
try:
st = os.fstat(fd)
except OSError as e:
if e.errno == errno.EBADF:
continue
raise
# Ignore Solaris door files
if st.st_mode & 0xF000 != 0xd000:
fds.append(fd)
print(','.join(map(str, fds)))

View File

@ -1156,9 +1156,6 @@ class POSIXProcessTestCase(BaseTestCase):
open_fds = set()
if support.verbose:
print(" -- maxfd =", subprocess.MAXFD)
for x in range(5):
fds = os.pipe()
self.addCleanup(os.close, fds[0])
@ -1173,10 +1170,6 @@ class POSIXProcessTestCase(BaseTestCase):
remaining_fds = set(map(int, output.split(b',')))
to_be_closed = open_fds - {fd}
# Temporary debug output for intermittent failures
if support.verbose:
print(" -- fds that should have been closed:", to_be_closed)
print(" -- fds that remained open:", remaining_fds)
self.assertIn(fd, remaining_fds, "fd to be passed not passed")
self.assertFalse(remaining_fds & to_be_closed,

View File

@ -27,6 +27,12 @@ Build
- Issue #11268: Prevent Mac OS X Installer failure if Documentation
package had previously been installed.
Tests
-----
- Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due
to open door files.
What's New in Python 3.2?
=========================