Added kill, terminate and send_signal to subprocess.Popen
The bits and pieces for the Windows side were already in place. The POSIX side is trivial (as usual) and uses os.kill().
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 9886f3d..ccefb67 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -584,6 +584,29 @@
os.remove(fname)
self.assertEqual(rc, 47)
+ def test_send_signal(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.send_signal(signal.SIGINT)
+ self.assertNotEqual(p.wait(), 0)
+
+ def test_kill(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.kill()
+ self.assertEqual(p.wait(), -signal.SIGKILL)
+
+ def test_terminate(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.terminate()
+ self.assertEqual(p.wait(), -signal.SIGTERM)
#
# Windows tests
@@ -655,6 +678,29 @@
' -c "import sys; sys.exit(47)"')
self.assertEqual(rc, 47)
+ def test_send_signal(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.send_signal(signal.SIGTERM)
+ self.assertNotEqual(p.wait(), 0)
+
+ def test_kill(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.kill()
+ self.assertNotEqual(p.wait(), 0)
+
+ def test_terminate(self):
+ p = subprocess.Popen([sys.executable,
+ "-c", "input()"])
+
+ self.assert_(p.poll() is None, p.poll())
+ p.terminate()
+ self.assertNotEqual(p.wait(), 0)
def test_main():
test_support.run_unittest(ProcessTestCase)