aboutsummaryrefslogtreecommitdiff
path: root/test/unit/helpers.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/helpers.lua')
-rw-r--r--test/unit/helpers.lua63
1 files changed, 42 insertions, 21 deletions
diff --git a/test/unit/helpers.lua b/test/unit/helpers.lua
index 5ad0766d61..3f1984f6de 100644
--- a/test/unit/helpers.lua
+++ b/test/unit/helpers.lua
@@ -1,19 +1,18 @@
local ffi = require('ffi')
-local lpeg = require('lpeg')
local formatc = require('test.unit.formatc')
local Set = require('test.unit.set')
local Preprocess = require('test.unit.preprocess')
local Paths = require('test.config.paths')
-- add some standard header locations
-for i, p in ipairs(Paths.include_paths) do
+for _, p in ipairs(Paths.include_paths) do
Preprocess.add_to_include_path(p)
end
-- load neovim shared library
local libnvim = ffi.load(Paths.test_libnvim_path)
-function trim(s)
+local function trim(s)
return s:match('^%s*(.*%S)') or ''
end
@@ -28,7 +27,7 @@ end
-- some things are just too complex for the LuaJIT C parser to digest. We
-- usually don't need them anyway.
-function filter_complex_blocks(body)
+local function filter_complex_blocks(body)
local result = {}
for line in body:gmatch("[^\r\n]+") do
@@ -43,31 +42,36 @@ end
-- use this helper to import C files, you can pass multiple paths at once,
-- this helper will return the C namespace of the nvim library.
--- cimport = (path) ->
-function cimport(...)
+local function cimport(...)
local paths = {}
local args = {...}
-- filter out paths we've already imported
- for i = 1, #args do
- local path = args[i]
- if not imported:contains(path) then
+ for _,path in pairs(args) do
+ if path ~= nil and not imported:contains(path) then
paths[#paths + 1] = path
end
end
- for i = 1, #paths do
- imported:add(paths[i])
+ for _,path in pairs(paths) do
+ imported:add(path)
end
if #paths == 0 then
return libnvim
end
- -- preprocess the header
- local stream = Preprocess.preprocess_stream(unpack(paths))
- local body = stream:read("*a")
- stream:close()
+ local body = nil
+ for i=1, 3 do
+ local stream = Preprocess.preprocess_stream(unpack(paths))
+ body = stream:read("*a")
+ stream:close()
+ if body ~= nil then break end
+ end
+
+ if body == nil then
+ print("ERROR: helpers.lua: Preprocess.preprocess_stream():read() returned empty")
+ end
-- format it (so that the lines are "unique" statements), also filter out
-- Objective-C blocks
@@ -98,7 +102,7 @@ function cimport(...)
return libnvim
end
-function cppimport(path)
+local function cppimport(path)
return cimport(Paths.test_include_path .. '/' .. path)
end
@@ -106,25 +110,42 @@ cimport('./src/nvim/types.h')
-- take a pointer to a C-allocated string and return an interned
-- version while also freeing the memory
-function internalize(cdata, len)
+local function internalize(cdata, len)
ffi.gc(cdata, ffi.C.free)
return ffi.string(cdata, len)
end
local cstr = ffi.typeof('char[?]')
-function to_cstr(string)
+local function to_cstr(string)
return cstr((string.len(string)) + 1, string)
end
-- initialize some global variables, this is still necessary to unit test
-- functions that rely on global state.
-function vim_init()
+local function vim_init()
if vim_init_called ~= nil then
return
end
-- import os_unix.h for mch_early_init(), which initializes some globals
- local os = cimport('./src/nvim/os_unix.h')
- os.mch_early_init()
+ local all = cimport('./src/nvim/os_unix.h',
+ './src/nvim/misc1.h',
+ './src/nvim/eval.h',
+ './src/nvim/os_unix.h',
+ './src/nvim/option.h',
+ './src/nvim/ex_cmds2.h',
+ './src/nvim/window.h',
+ './src/nvim/ops.h',
+ './src/nvim/normal.h',
+ './src/nvim/mbyte.h')
+ all.mch_early_init()
+ all.mb_init()
+ all.eval_init()
+ all.init_normal_cmds()
+ all.win_alloc_first()
+ all.init_yank()
+ all.init_homedir()
+ all.set_init_1()
+ all.set_lang_var()
vim_init_called = true
end