From e04637e08881870c2ba10986724d90ead1a7daed Mon Sep 17 00:00:00 2001 From: Bill Fisher Date: Wed, 31 Aug 2022 15:05:24 -0700 Subject: [PATCH] create_subprocess_exec should treat env={} as empty environment (#439) (#454) * Empty env dict represents empty environment. * Allow 0-length cstring array Co-authored-by: Fantix King --- tests/test_process.py | 16 ++++++++++++++++ uvloop/handles/process.pyx | 5 +---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/test_process.py b/tests/test_process.py index 775b5f0d..13585189 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -50,6 +50,22 @@ async def test(): self.loop.run_until_complete(test()) + def test_process_env_2(self): + async def test(): + cmd = 'env' + env = {} # empty environment + proc = await asyncio.create_subprocess_exec( + cmd, + env=env, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + + out, _ = await proc.communicate() + self.assertEqual(out, b'') + self.assertEqual(proc.returncode, 0) + + self.loop.run_until_complete(test()) + def test_process_cwd_1(self): async def test(): cmd = 'pwd' diff --git a/uvloop/handles/process.pyx b/uvloop/handles/process.pyx index 0146f92e..1ffbd8ca 100644 --- a/uvloop/handles/process.pyx +++ b/uvloop/handles/process.pyx @@ -217,9 +217,6 @@ cdef class UVProcess(UVHandle): char **ret - if UVLOOP_DEBUG: - assert arr_len > 0 - ret = PyMem_RawMalloc((arr_len + 1) * sizeof(char *)) if ret is NULL: raise MemoryError() @@ -285,7 +282,7 @@ cdef class UVProcess(UVHandle): self.uv_opt_args = self.__to_cstring_array(self.__args) cdef _init_env(self, dict env): - if env is not None and len(env): + if env is not None: self.__env = list() for key in env: val = env[key]