aboutsummaryrefslogtreecommitdiff
path: root/test/unit/message_spec.lua
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-03-06 12:14:39 -0500
committerJames McCoy <jamessan@jamessan.com>2017-03-06 15:36:09 -0500
commit4e3a2784ec3cb4ff79bd48f55a8edee817dec6e7 (patch)
tree89cbc731234cffd3981c2692928a20d7c0f0a8da /test/unit/message_spec.lua
parent7217360e349ff787933d91b55efdfeb435eb45cb (diff)
downloadrneovim-4e3a2784ec3cb4ff79bd48f55a8edee817dec6e7.tar.gz
rneovim-4e3a2784ec3cb4ff79bd48f55a8edee817dec6e7.tar.bz2
rneovim-4e3a2784ec3cb4ff79bd48f55a8edee817dec6e7.zip
vim-patch:7.4.2068
Problem: Not all arguments of trunc_string() are tested. Memory access error when running the message tests. Solution: Add another test case. (Yegappan Lakshmanan) Make it easy to run unittests with valgrind. Fix the access error. https://github.com/vim/vim/commit/b9644433d2728e99fab874e5e33147ad95d23a31
Diffstat (limited to 'test/unit/message_spec.lua')
-rw-r--r--test/unit/message_spec.lua28
1 files changed, 19 insertions, 9 deletions
diff --git a/test/unit/message_spec.lua b/test/unit/message_spec.lua
index 23d342c027..afb572347f 100644
--- a/test/unit/message_spec.lua
+++ b/test/unit/message_spec.lua
@@ -4,22 +4,28 @@ local ffi = helpers.ffi
local eq = helpers.eq
local to_cstr = helpers.to_cstr
-local cimp = helpers.cimport('./src/nvim/message.h')
+local cimp = helpers.cimport('./src/nvim/message.h', './src/nvim/memory.h',
+ './src/nvim/strings.h')
describe('trunc_string', function()
- local buffer = ffi.typeof('char_u[40]')
-
- local function test_inplace(s, expected)
- local buf = buffer()
+ local buflen = 40
+ local function test_inplace(s, expected, room)
+ room = room and room or 20
+ local buf = cimp.xmalloc(ffi.sizeof('char_u') * buflen)
ffi.C.strcpy(buf, s)
- cimp.trunc_string(buf, buf, 20, 40)
+ cimp.trunc_string(buf, buf, room, buflen)
eq(expected, ffi.string(buf))
+ cimp.xfree(buf)
end
- local function test_copy(s, expected)
- local buf = buffer()
- cimp.trunc_string(to_cstr(s), buf, 20, 40)
+ local function test_copy(s, expected, room)
+ room = room and room or 20
+ local buf = cimp.xmalloc(ffi.sizeof('char_u') * buflen)
+ local str = cimp.vim_strsave(to_cstr(s))
+ cimp.trunc_string(str, buf, room, buflen)
eq(expected, ffi.string(buf))
+ cimp.xfree(buf)
+ cimp.xfree(str)
end
local permutations = {
@@ -37,6 +43,10 @@ describe('trunc_string', function()
t.func('a short text', 'a short text')
end)
+ it('with a string of length == 1/2 room', function()
+ t.func('a text that fits', 'a text that fits', 34)
+ end)
+
it('with a string exactly the truncate size', function()
t.func('a text tha just fits', 'a text tha just fits')
end)