res = subprocess.run(args)
self.assertEqual(res.returncode, 57)
+ @unittest.skipUnless(mswindows, "Maybe test trigger a leak on Ubuntu")
+ def test_run_with_an_empty_env(self):
+ # gh-105436: fix subprocess.run(..., env={}) broken on Windows
+ args = [sys.executable, "-c", 'import sys; sys.exit(57)']
+ res = subprocess.run(args, env={})
+ self.assertEqual(res.returncode, 57)
+
def test_capture_output(self):
cp = self.run_python(("import sys;"
"sys.stdout.write('BDFL'); "
}
envsize = PyList_GET_SIZE(keys);
+
+ if (envsize == 0) {
+ // A environment block must be terminated by two null characters --
+ // one for the last string and one for the block.
+ buffer = PyMem_Calloc(2, sizeof(wchar_t));
+ if (!buffer) {
+ PyErr_NoMemory();
+ }
+ goto cleanup;
+ }
+
if (PyList_GET_SIZE(values) != envsize) {
PyErr_SetString(PyExc_RuntimeError,
"environment changed size during iteration");
*p++ = L'\0';
assert(p == end);
- error:
+cleanup:
+error:
Py_XDECREF(keys);
Py_XDECREF(values);
return buffer;