Merged revisions 85315 via svnmerge from

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

........
  r85315 | hirokazu.yamamoto | 2010-10-08 17:38:15 +0900 | 1 line

  Issue #9978: Wait until subprocess completes initialization. (Win32KillTests in test_os)
........
This commit is contained in:
Hirokazu Yamamoto 2010-10-08 09:41:13 +00:00
parent 354fe7e381
commit 1f504f1d7a
3 changed files with 23 additions and 2 deletions

View file

@ -11,6 +11,8 @@ import signal
import subprocess
import time
from test import test_support
import mmap
import uuid
warnings.filterwarnings("ignore", "tempnam", RuntimeWarning, __name__)
warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, __name__)
@ -736,13 +738,23 @@ class Win32KillTests(unittest.TestCase):
self._kill(100)
def _kill_with_event(self, event, name):
tagname = "test_os_%s" % uuid.uuid1()
m = mmap.mmap(-1, 1, tagname)
m[0] = '0'
# Run a script which has console control handling enabled.
proc = subprocess.Popen([sys.executable,
os.path.join(os.path.dirname(__file__),
"win_console_handler.py")],
"win_console_handler.py"), tagname],
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
# Let the interpreter startup before we send signals. See #3137.
time.sleep(0.5)
count, max = 0, 20
while count < max and proc.poll() is None:
if m[0] == '0':
break
time.sleep(0.5)
count += 1
else:
self.fail("Subprocess didn't finish initialization")
os.kill(proc.pid, event)
# proc.send_signal(event) could also be done here.
# Allow time for the signal to be passed and the process to exit.