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
|
# We are the parent of our subprocess
|
||||||
self.assertEqual(int(stdout), os.getpid())
|
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
|
# The introduction of this TestCase caused at least two different errors on
|
||||||
# *nix buildbots. Temporarily skip this to let the buildbots move along.
|
# *nix buildbots. Temporarily skip this to let the buildbots move along.
|
||||||
|
|
|
@ -14,6 +14,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
|
||||||
|
|
||||||
- Issue #24684: socket.socket.getaddrinfo() now calls
|
- Issue #24684: socket.socket.getaddrinfo() now calls
|
||||||
PyUnicode_AsEncodedString() instead of calling the encode() method of the
|
PyUnicode_AsEncodedString() instead of calling the encode() method of the
|
||||||
host, to handle correctly custom string with an encode() method which doesn't
|
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);
|
res = _cwait(&status, pid, options);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
} while (res < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
} while (res < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||||
if (res != 0)
|
if (res < 0)
|
||||||
return (!async_err) ? posix_error() : NULL;
|
return (!async_err) ? posix_error() : NULL;
|
||||||
|
|
||||||
/* shift the status left a byte so this is more like the POSIX waitpid */
|
/* 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()));
|
} while (fd < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||||
_Py_END_SUPPRESS_IPH
|
_Py_END_SUPPRESS_IPH
|
||||||
|
|
||||||
if (fd == -1) {
|
if (fd < 0) {
|
||||||
if (!async_err)
|
if (!async_err)
|
||||||
PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path->object);
|
PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path->object);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue