mirror of
https://github.com/neovim/neovim.git
synced 2025-10-02 07:58:35 +00:00
Implement os_unsetenv()
- In UNIX systems where unsetenv() is available, it is used. Otherwise the variables are set with the empty string. - New check HAVE_UNSETENV for unsetenv() - Added unit test to env_spec.lua
This commit is contained in:

committed by
Scott Prager

parent
a9ee85b9fc
commit
71487a935e
@@ -58,6 +58,7 @@ check_function_exists(setenv HAVE_SETENV)
|
|||||||
if(NOT HAVE_SETENV)
|
if(NOT HAVE_SETENV)
|
||||||
message(SEND_ERROR "setenv() function not found on your system.")
|
message(SEND_ERROR "setenv() function not found on your system.")
|
||||||
endif()
|
endif()
|
||||||
|
check_function_exists(unsetenv HAVE_UNSETENV)
|
||||||
check_function_exists(setpgid HAVE_SETPGID)
|
check_function_exists(setpgid HAVE_SETPGID)
|
||||||
check_function_exists(setsid HAVE_SETSID)
|
check_function_exists(setsid HAVE_SETSID)
|
||||||
check_function_exists(sigaction HAVE_SIGACTION)
|
check_function_exists(sigaction HAVE_SIGACTION)
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
// TODO: add proper cmake check
|
// TODO: add proper cmake check
|
||||||
// #define HAVE_SELINUX 1
|
// #define HAVE_SELINUX 1
|
||||||
#cmakedefine HAVE_SETENV
|
#cmakedefine HAVE_SETENV
|
||||||
|
#cmakedefine HAVE_UNSETENV
|
||||||
#cmakedefine HAVE_SETPGID
|
#cmakedefine HAVE_SETPGID
|
||||||
#cmakedefine HAVE_SETSID
|
#cmakedefine HAVE_SETSID
|
||||||
#cmakedefine HAVE_SIGACTION
|
#cmakedefine HAVE_SIGACTION
|
||||||
|
@@ -37,6 +37,19 @@ int os_setenv(const char *name, const char *value, int overwrite)
|
|||||||
return setenv(name, value, overwrite);
|
return setenv(name, value, overwrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Unset environment variable
|
||||||
|
///
|
||||||
|
/// For systems where unsetenv() is not available the value will be set as an
|
||||||
|
/// empty string
|
||||||
|
int os_unsetenv(const char *name)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_UNSETENV
|
||||||
|
return unsetenv(name);
|
||||||
|
#else
|
||||||
|
return os_setenv(name, "", 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
char *os_getenvname_at_index(size_t index)
|
char *os_getenvname_at_index(size_t index)
|
||||||
{
|
{
|
||||||
# if defined(HAVE__NSGETENVIRON)
|
# if defined(HAVE__NSGETENVIRON)
|
||||||
|
@@ -3,6 +3,7 @@ local helpers = require('test.unit.helpers')
|
|||||||
local cimport = helpers.cimport
|
local cimport = helpers.cimport
|
||||||
local internalize = helpers.internalize
|
local internalize = helpers.internalize
|
||||||
local eq = helpers.eq
|
local eq = helpers.eq
|
||||||
|
local neq = helpers.neq
|
||||||
local ffi = helpers.ffi
|
local ffi = helpers.ffi
|
||||||
local lib = helpers.lib
|
local lib = helpers.lib
|
||||||
local cstr = helpers.cstr
|
local cstr = helpers.cstr
|
||||||
@@ -21,6 +22,10 @@ describe('env function', function()
|
|||||||
return env.os_setenv((to_cstr(name)), (to_cstr(value)), override)
|
return env.os_setenv((to_cstr(name)), (to_cstr(value)), override)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function os_unsetenv(name, value, override)
|
||||||
|
return env.os_unsetenv((to_cstr(name)))
|
||||||
|
end
|
||||||
|
|
||||||
function os_getenv(name)
|
function os_getenv(name)
|
||||||
local rval = env.os_getenv((to_cstr(name)))
|
local rval = env.os_getenv((to_cstr(name)))
|
||||||
if rval ~= NULL then
|
if rval ~= NULL then
|
||||||
@@ -68,6 +73,18 @@ describe('env function', function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('os_unsetenv', function()
|
||||||
|
it('unsets environment variable', function()
|
||||||
|
local name = 'TEST_UNSETENV'
|
||||||
|
local value = 'TESTVALUE'
|
||||||
|
os_setenv(name, value, 1)
|
||||||
|
os_unsetenv(name)
|
||||||
|
neq(os_getenv(name), value)
|
||||||
|
-- Depending on the platform the var might be unset or set as ''
|
||||||
|
assert.True(os_getenv(name) == nil or os_getenv(name) == '')
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
describe('os_getenvname_at_index', function()
|
describe('os_getenvname_at_index', function()
|
||||||
it('returns names of environment variables', function()
|
it('returns names of environment variables', function()
|
||||||
local test_name = 'NEOVIM_UNIT_TEST_GETENVNAME_AT_INDEX_1N'
|
local test_name = 'NEOVIM_UNIT_TEST_GETENVNAME_AT_INDEX_1N'
|
||||||
|
Reference in New Issue
Block a user