[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