mirror of
https://github.com/python/cpython.git
synced 2025-08-15 14:20:55 +00:00
Merged revisions 84883 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84883 | antoine.pitrou | 2010-09-19 00:38:48 +0200 (dim., 19 sept. 2010) | 3 lines Issue #9895: speed up test_subprocess ........
This commit is contained in:
parent
c4caa9c400
commit
b0b3bffe8b
1 changed files with 32 additions and 12 deletions
|
@ -454,20 +454,40 @@ class ProcessTestCase(BaseTestCase):
|
||||||
|
|
||||||
def test_no_leaking(self):
|
def test_no_leaking(self):
|
||||||
# Make sure we leak no resources
|
# Make sure we leak no resources
|
||||||
if not hasattr(test_support, "is_resource_enabled") \
|
if not mswindows:
|
||||||
or test_support.is_resource_enabled("subprocess") and not mswindows:
|
|
||||||
max_handles = 1026 # too much for most UNIX systems
|
max_handles = 1026 # too much for most UNIX systems
|
||||||
else:
|
else:
|
||||||
max_handles = 65
|
max_handles = 2050 # too much for (at least some) Windows setups
|
||||||
|
handles = []
|
||||||
|
try:
|
||||||
for i in range(max_handles):
|
for i in range(max_handles):
|
||||||
|
try:
|
||||||
|
handles.append(os.open(test_support.TESTFN,
|
||||||
|
os.O_WRONLY | os.O_CREAT))
|
||||||
|
except OSError as e:
|
||||||
|
if e.errno != errno.EMFILE:
|
||||||
|
raise
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.skipTest("failed to reach the file descriptor limit "
|
||||||
|
"(tried %d)" % max_handles)
|
||||||
|
# Close a couple of them (should be enough for a subprocess)
|
||||||
|
for i in range(10):
|
||||||
|
os.close(handles.pop())
|
||||||
|
# Loop creating some subprocesses. If one of them leaks some fds,
|
||||||
|
# the next loop iteration will fail by reaching the max fd limit.
|
||||||
|
for i in range(15):
|
||||||
p = subprocess.Popen([sys.executable, "-c",
|
p = subprocess.Popen([sys.executable, "-c",
|
||||||
"import sys;sys.stdout.write(sys.stdin.read())"],
|
"import sys;"
|
||||||
|
"sys.stdout.write(sys.stdin.read())"],
|
||||||
stdin=subprocess.PIPE,
|
stdin=subprocess.PIPE,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE)
|
stderr=subprocess.PIPE)
|
||||||
data = p.communicate("lime")[0]
|
data = p.communicate(b"lime")[0]
|
||||||
self.assertEqual(data, "lime")
|
self.assertEqual(data, b"lime")
|
||||||
|
finally:
|
||||||
|
for h in handles:
|
||||||
|
os.close(h)
|
||||||
|
|
||||||
def test_list2cmdline(self):
|
def test_list2cmdline(self):
|
||||||
self.assertEqual(subprocess.list2cmdline(['a b c', 'd', 'e']),
|
self.assertEqual(subprocess.list2cmdline(['a b c', 'd', 'e']),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue