aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbobtwinkles <srkoser+GitHub@gmail.com>2015-03-14 02:30:45 -0400
committerJustin M. Keyes <justinkz@gmail.com>2015-03-24 16:13:00 -0400
commit3fc18e25b8f6c1ead673ce9283461af9495829c4 (patch)
treeb8ddb9093314c71a56cd2542ebb675ddaf2c02e2
parent03d47965c0ad5941c88ebd3b91233e7a566935f7 (diff)
downloadrneovim-3fc18e25b8f6c1ead673ce9283461af9495829c4.tar.gz
rneovim-3fc18e25b8f6c1ead673ce9283461af9495829c4.tar.bz2
rneovim-3fc18e25b8f6c1ead673ce9283461af9495829c4.zip
refactor: add tests for env_expand_esc
-rw-r--r--test/unit/os/env_spec.lua78
1 files changed, 78 insertions, 0 deletions
diff --git a/test/unit/os/env_spec.lua b/test/unit/os/env_spec.lua
index d04754f5ee..5896f5ddd4 100644
--- a/test/unit/os/env_spec.lua
+++ b/test/unit/os/env_spec.lua
@@ -11,6 +11,9 @@ local NULL = helpers.NULL
require('lfs')
+-- Needed because expand_env_esc uses the char table
+helpers.vim_init()
+
local env = cimport('./src/nvim/os/os.h')
describe('env function', function()
@@ -127,4 +130,79 @@ describe('env function', function()
eq(hostname, (ffi.string(hostname_buf)))
end)
end)
+
+ describe('expand_env_esc', function()
+ it('expands environment variables', function()
+ local name = 'NEOVIM_UNIT_TEST_EXPAND_ENV_ESCN'
+ local value = 'NEOVIM_UNIT_TEST_EXPAND_ENV_ESCV'
+ os_setenv(name, value, 1)
+ -- TODO(bobtwinkles) This only tests UNIX expansions. There should be a
+ -- test for windows as well
+ local input1 = to_cstr('$NEOVIM_UNIT_TEST_EXPAND_ENV_ESCN/test')
+ local input2 = to_cstr('${NEOVIM_UNIT_TEST_EXPAND_ENV_ESCN}/test')
+ local output_buff1 = cstr(255, '')
+ local output_buff2 = cstr(255, '')
+ local output_expected = 'NEOVIM_UNIT_TEST_EXPAND_ENV_ESCV/test'
+ env.expand_env_esc(input1, output_buff1, 255, false, true, NULL)
+ env.expand_env_esc(input2, output_buff2, 255, false, true, NULL)
+ eq(output_expected, ffi.string(output_buff1))
+ eq(output_expected, ffi.string(output_buff2))
+ end)
+
+ it('expands ~ once when one is true', function()
+ local input = '~/foo ~ foo'
+ local homedir = cstr(255, '')
+ env.expand_env_esc(to_cstr('~'), homedir, 255, false, true, NULL)
+ local output_expected = ffi.string(homedir) .. "/foo ~ foo"
+ local output = cstr(255, '')
+ env.expand_env_esc(to_cstr(input), output, 255, false, true, NULL)
+ eq(ffi.string(output), ffi.string(output_expected))
+ end)
+
+ it('expands ~ every time when one is false', function()
+ local input = to_cstr('~/foo ~ foo')
+ local homedir = cstr(255, '')
+ env.expand_env_esc(to_cstr('~'), homedir, 255, false, true, NULL)
+ homedir = ffi.string(homedir)
+ local output_expected = homedir .. "/foo " .. homedir .. " foo"
+ local output = cstr(255, '')
+ env.expand_env_esc(input, output, 255, false, false, NULL)
+ eq(output_expected, ffi.string(output))
+ end)
+
+ it('respects the dstlen parameter without expansion', function()
+ local input = to_cstr('this is a very long thing that will not fit')
+ -- The buffer is long enough to actually contain the full input in case the
+ -- test fails, but we don't tell expand_env_esc that
+ local output = cstr(255, '')
+ env.expand_env_esc(input, output, 5, false, true, NULL)
+ -- Make sure the first few characters are copied properly and that there is a
+ -- terminating null character
+ for i=0,3 do
+ eq(input[i], output[i])
+ end
+ eq(0, output[4])
+ end)
+
+ it('respects the dstlen parameter with expansion', function()
+ local varname = to_cstr('NVIM_UNIT_TEST_EXPAND_ENV_ESC_DSTLENN')
+ local varval = to_cstr('NVIM_UNIT_TEST_EXPAND_ENV_ESC_DSTLENV')
+ env.os_setenv(varname, varval, 1)
+ -- TODO(bobtwinkles) This test uses unix-specific environment variable accessing,
+ -- should have some alternative for windows
+ local input = to_cstr('$NVIM_UNIT_TEST_EXPAND_ENV_ESC_DSTLENN/even more stuff')
+ -- The buffer is long enough to actually contain the full input in case the
+ -- test fails, but we don't tell expand_env_esc that
+ local output = cstr(255, '')
+ env.expand_env_esc(input, output, 5, false, true, NULL)
+ -- Make sure the first few characters are copied properly and that there is a
+ -- terminating null character
+ -- expand_env_esc SHOULD NOT expand the variable if there is not enough space to
+ -- contain the result
+ for i=0,3 do
+ eq(output[i], input[i])
+ end
+ eq(output[4], 0)
+ end)
+ end)
end)