[Python-checkins] r88190 - in python/branches/test_subprocess_10826/Lib/test: subprocessdata/fd_status.py test_subprocess.py
antoine.pitrou
python-checkins at python.org
Tue Jan 25 21:54:53 CET 2011
Author: antoine.pitrou
Date: Tue Jan 25 21:54:53 2011
New Revision: 88190
Log:
Make test_subprocess more chatty
Modified:
python/branches/test_subprocess_10826/Lib/test/subprocessdata/fd_status.py
python/branches/test_subprocess_10826/Lib/test/test_subprocess.py
Modified: python/branches/test_subprocess_10826/Lib/test/subprocessdata/fd_status.py
==============================================================================
--- python/branches/test_subprocess_10826/Lib/test/subprocessdata/fd_status.py (original)
+++ python/branches/test_subprocess_10826/Lib/test/subprocessdata/fd_status.py Tue Jan 25 21:54:53 2011
@@ -4,6 +4,7 @@
import errno
import os
import fcntl
+import sys
try:
_MAXFD = os.sysconf("SC_OPEN_MAX")
@@ -21,4 +22,8 @@
return True
if __name__ == "__main__":
- print(','.join(str(fd) for fd in range(0, _MAXFD) if isopen(fd)))
+ fds = [fd for fd in range(0, _MAXFD) if isopen(fd)]
+ print(','.join(map(str, fds)))
+ if '--debug' in sys.argv[1:]:
+ for fd in fds:
+ print(fd, fcntl.fcntl(fd, fcntl.F_GETFL), os.fstat(fd))
Modified: python/branches/test_subprocess_10826/Lib/test/test_subprocess.py
==============================================================================
--- python/branches/test_subprocess_10826/Lib/test/test_subprocess.py (original)
+++ python/branches/test_subprocess_10826/Lib/test/test_subprocess.py Tue Jan 25 21:54:53 2011
@@ -1075,13 +1075,13 @@
sleeper = support.findfile("input_reader.py", subdir="subprocessdata")
fd_status = support.findfile("fd_status.py", subdir="subprocessdata")
- p1 = subprocess.Popen([sys.executable, sleeper],
+ p1 = subprocess.Popen([sys.executable, '-E', sleeper],
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, close_fds=False)
self.addCleanup(p1.communicate, b'')
- p2 = subprocess.Popen([sys.executable, fd_status],
+ p2 = subprocess.Popen([sys.executable, '-E', fd_status],
stdout=subprocess.PIPE, close_fds=False)
output, error = p2.communicate()
@@ -1134,7 +1134,7 @@
open_fds = set(fds)
- p = subprocess.Popen([sys.executable, fd_status],
+ p = subprocess.Popen([sys.executable, '-E', fd_status],
stdout=subprocess.PIPE, close_fds=False)
output, ignored = p.communicate()
remaining_fds = set(map(int, output.split(b',')))
@@ -1142,7 +1142,7 @@
self.assertEqual(remaining_fds & open_fds, open_fds,
"Some fds were closed")
- p = subprocess.Popen([sys.executable, fd_status],
+ p = subprocess.Popen([sys.executable, '-E', fd_status],
stdout=subprocess.PIPE, close_fds=True)
output, ignored = p.communicate()
remaining_fds = set(map(int, output.split(b',')))
@@ -1166,17 +1166,22 @@
open_fds.update(fds)
for fd in open_fds:
- p = subprocess.Popen([sys.executable, fd_status],
+ p = subprocess.Popen([sys.executable, '-E', fd_status, '--debug'],
stdout=subprocess.PIPE, close_fds=True,
pass_fds=(fd, ))
output, ignored = p.communicate()
- remaining_fds = set(map(int, output.split(b',')))
+ # First line is the list of open fds, the rest is human-readable
+ # debug output.
+ remaining_fds, *debug = output.splitlines()
+ remaining_fds = set(map(int, remaining_fds.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)
+ print(" -- debug info:")
+ print("\n".join(s.decode('latin1') for s in debug))
self.assertIn(fd, remaining_fds, "fd to be passed not passed")
self.assertFalse(remaining_fds & to_be_closed,
More information about the Python-checkins
mailing list