Skip to content

Commit bb5080a

Browse files
committed
Add test_kqueue_race()
1 parent 932ae58 commit bb5080a

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

Lib/test/test_subprocess.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4131,18 +4131,24 @@ def assert_wait_pid_race(self, patch_target, real_func):
41314131
def wrapper(*args, **kwargs):
41324132
ret = real_func(*args, **kwargs)
41334133
os.kill(p.pid, signal.SIGTERM)
4134+
os.waitpid(p.pid, 0)
41344135
return ret
41354136

41364137
with mock.patch(patch_target, side_effect=wrapper) as m:
4137-
with self.assertRaises(subprocess.TimeoutExpired):
4138-
p.wait(timeout=0.0001)
4138+
status = p.wait(timeout=support.SHORT_TIMEOUT)
41394139
assert m.called
4140-
self.assertEqual(p.wait(timeout=support.SHORT_TIMEOUT), -signal.SIGTERM)
4140+
self.assertEqual(status, 0)
41414141

41424142
@unittest.skipIf(not hasattr(os, "pidfd_open"), reason="LINUX only")
41434143
def test_pidfd_open_race(self):
41444144
self.assert_wait_pid_race("os.pidfd_open", os.pidfd_open)
41454145

4146+
@unittest.skipIf(
4147+
not subprocess._can_use_kqueue(), reason="macOS / BSD only"
4148+
)
4149+
def test_kqueue_race(self):
4150+
self.assert_wait_pid_race("select.kqueue", select.kqueue)
4151+
41464152

41474153
if __name__ == "__main__":
41484154
unittest.main()

0 commit comments

Comments
 (0)