Issue #25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
Add an unit test on os.waitpid()
This commit is contained in:
parent
d64cfc215c
commit
d3ffd32767
|
@ -2078,6 +2078,12 @@ class PidTests(unittest.TestCase):
|
|||
# We are the parent of our subprocess
|
||||
self.assertEqual(int(stdout), os.getpid())
|
||||
|
||||
def test_waitpid(self):
|
||||
args = [sys.executable, '-c', 'pass']
|
||||
pid = os.spawnv(os.P_NOWAIT, args[0], args)
|
||||
status = os.waitpid(pid, 0)
|
||||
self.assertEqual(status, (pid, 0))
|
||||
|
||||
|
||||
# The introduction of this TestCase caused at least two different errors on
|
||||
# *nix buildbots. Temporarily skip this to let the buildbots move along.
|
||||
|
|
|
@ -14,6 +14,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
|
||||
|
||||
- Issue #24684: socket.socket.getaddrinfo() now calls
|
||||
PyUnicode_AsEncodedString() instead of calling the encode() method of the
|
||||
host, to handle correctly custom string with an encode() method which doesn't
|
||||
|
|
|
@ -7021,7 +7021,7 @@ os_waitpid_impl(PyModuleDef *module, Py_intptr_t pid, int options)
|
|||
res = _cwait(&status, pid, options);
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (res < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
if (res != 0)
|
||||
if (res < 0)
|
||||
return (!async_err) ? posix_error() : NULL;
|
||||
|
||||
/* shift the status left a byte so this is more like the POSIX waitpid */
|
||||
|
@ -7731,7 +7731,7 @@ os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode,
|
|||
} while (fd < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
_Py_END_SUPPRESS_IPH
|
||||
|
||||
if (fd == -1) {
|
||||
if (fd < 0) {
|
||||
if (!async_err)
|
||||
PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path->object);
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue