mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07: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:
parent
a9ee85b9fc
commit
71487a935e
@ -58,6 +58,7 @@ check_function_exists(setenv HAVE_SETENV)
|
||||
if(NOT HAVE_SETENV)
|
||||
message(SEND_ERROR "setenv() function not found on your system.")
|
||||
endif()
|
||||
check_function_exists(unsetenv HAVE_UNSETENV)
|
||||
check_function_exists(setpgid HAVE_SETPGID)
|
||||
check_function_exists(setsid HAVE_SETSID)
|
||||
check_function_exists(sigaction HAVE_SIGACTION)
|
||||
|
@ -37,6 +37,7 @@
|
||||
// TODO: add proper cmake check
|
||||
// #define HAVE_SELINUX 1
|
||||
#cmakedefine HAVE_SETENV
|
||||
#cmakedefine HAVE_UNSETENV
|
||||
#cmakedefine HAVE_SETPGID
|
||||
#cmakedefine HAVE_SETSID
|
||||
#cmakedefine HAVE_SIGACTION
|
||||
|
@ -37,6 +37,19 @@ int os_setenv(const char *name, const char *value, int 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)
|
||||
{
|
||||
# if defined(HAVE__NSGETENVIRON)
|
||||
|
@ -3,6 +3,7 @@ local helpers = require('test.unit.helpers')
|
||||
local cimport = helpers.cimport
|
||||
local internalize = helpers.internalize
|
||||
local eq = helpers.eq
|
||||
local neq = helpers.neq
|
||||
local ffi = helpers.ffi
|
||||
local lib = helpers.lib
|
||||
local cstr = helpers.cstr
|
||||
@ -21,6 +22,10 @@ describe('env function', function()
|
||||
return env.os_setenv((to_cstr(name)), (to_cstr(value)), override)
|
||||
end
|
||||
|
||||
function os_unsetenv(name, value, override)
|
||||
return env.os_unsetenv((to_cstr(name)))
|
||||
end
|
||||
|
||||
function os_getenv(name)
|
||||
local rval = env.os_getenv((to_cstr(name)))
|
||||
if rval ~= NULL then
|
||||
@ -68,6 +73,18 @@ describe('env function', function()
|
||||
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()
|
||||
it('returns names of environment variables', function()
|
||||
local test_name = 'NEOVIM_UNIT_TEST_GETENVNAME_AT_INDEX_1N'
|
||||
|
Loading…
Reference in New Issue
Block a user