From 4eebc46930008d7cf47491121556ee201e1f4860 Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Wed, 2 Jul 2025 12:08:48 +0100 Subject: fix(vim.system): env=nil passes env=nil to uv.spawn 731e616a79 made it so passing `{env = nil, clear_env = true }` would pass `{env = {}}` to `vim.uv.spawn`. However this is not what `clear_env` is (arguably) supposed to do. If `env=nil` then that implies the uses wants `vim.uv.spawn()` to use the default environment. Adding `clear_env = true` simply prevents `NVIM` (the base environment) from being added. Fixes #34730 --- test/functional/lua/system_spec.lua | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/functional/lua/system_spec.lua') diff --git a/test/functional/lua/system_spec.lua b/test/functional/lua/system_spec.lua index 97972698a6..7016ffbc59 100644 --- a/test/functional/lua/system_spec.lua +++ b/test/functional/lua/system_spec.lua @@ -93,6 +93,27 @@ describe('vim.system', function() ) end) + it('can set environment with clear_env = true and env = nil', function() + exec_lua(function() + vim.env.TEST = 'TESTVAL' + end) + + -- Not passing env with clear_env should not clear the environment + eq( + 'TESTVAL', + system({ n.testprg('printenv-test'), 'TEST' }, { clear_env = true, text = true }).stdout + ) + + -- Passing env = {} with clear_env should clear the environment + eq( + '', + system( + { n.testprg('printenv-test'), 'TEST' }, + { env = {}, clear_env = true, text = true } + ).stdout + ) + end) + it('supports timeout', function() eq({ code = 124, -- cgit