From 224f99b85d311ebd31451db13b66e4a3c7e51938 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 2 Feb 2017 13:16:15 +0100 Subject: 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(). https://github.com/vim/vim/blob/c4a249a736d40ec54794827ef95804c225d0e38f/src/os_win32.c#L354-L370 --- test/unit/os/env_spec.lua | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'test/unit') diff --git a/test/unit/os/env_spec.lua b/test/unit/os/env_spec.lua index 64bbaaa8c2..3c2cc164c9 100644 --- a/test/unit/os/env_spec.lua +++ b/test/unit/os/env_spec.lua @@ -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' -- cgit