win: Append process dir to $PATH

This allows executables to be found by :!, system(), and executable() if
they live next to ("sibling" to) nvim.exe. This is what gvim on Windows
does, and also matches the behavior of Win32 SearchPath().

c4a249a736/src/os_win32.c (L354-L370)
This commit is contained in:
Justin M. Keyes
2017-02-02 13:16:15 +01:00
parent 7d58aba80c
commit 224f99b85d
10 changed files with 120 additions and 31 deletions

View File

@@ -14,15 +14,15 @@ local cimp = cimport('./src/nvim/os/os.h')
describe('env function', function()
local function os_setenv(name, value, override)
return cimp.os_setenv((to_cstr(name)), (to_cstr(value)), override)
return cimp.os_setenv(to_cstr(name), to_cstr(value), override)
end
local function os_unsetenv(name, _, _)
return cimp.os_unsetenv((to_cstr(name)))
return cimp.os_unsetenv(to_cstr(name))
end
local function os_getenv(name)
local rval = cimp.os_getenv((to_cstr(name)))
local rval = cimp.os_getenv(to_cstr(name))
if rval ~= NULL then
return ffi.string(rval)
else
@@ -52,6 +52,20 @@ describe('env function', function()
end)
end)
describe('os_setenv_append_path', function()
it('appends /foo/bar to $PATH', function()
local original_path = os.getenv('PATH')
eq(true, cimp.os_setenv_append_path(to_cstr('/foo/bar/baz')))
eq(original_path..':/foo/bar', os.getenv('PATH'))
end)
it('returns false if `fname` is not absolute', function()
local original_path = os.getenv('PATH')
eq(false, cimp.os_setenv_append_path(to_cstr('foo/bar/baz')))
eq(original_path, os.getenv('PATH'))
end)
end)
describe('os_getenv', function()
it('reads an env variable', function()
local name = 'NEOVIM_UNIT_TEST_GETENV_1N'