diff options
Diffstat (limited to 'test/unit/helpers.lua')
-rw-r--r-- | test/unit/helpers.lua | 78 |
1 files changed, 62 insertions, 16 deletions
diff --git a/test/unit/helpers.lua b/test/unit/helpers.lua index d17b423e4f..b8c1c5fc16 100644 --- a/test/unit/helpers.lua +++ b/test/unit/helpers.lua @@ -4,7 +4,6 @@ local Set = require('test.unit.set') local Preprocess = require('test.unit.preprocess') local Paths = require('test.config.paths') local global_helpers = require('test.helpers') -local posix = require('posix') local assert = require('luassert') local say = require('say') @@ -56,6 +55,10 @@ end local previous_defines = '' +local cdef = ffi.cdef + +local cimportstr + -- 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. local function cimport(...) @@ -80,6 +83,10 @@ local function cimport(...) local body body, previous_defines = Preprocess.preprocess(previous_defines, unpack(paths)) + return cimportstr(body) +end + +cimportstr = function(body) -- format it (so that the lines are "unique" statements), also filter out -- Objective-C blocks if os.getenv('NVIM_TEST_PRINT_I') == '1' then @@ -89,6 +96,8 @@ local function cimport(...) print(lnum, line) end end + body = body:gsub('//.*', '') + body = body:gsub('/%*.*%*/', '') body = formatc(body) body = filter_complex_blocks(body) @@ -125,11 +134,15 @@ local function cimport(...) print(lnum, line) end end - ffi.cdef(table.concat(new_lines, "\n")) + cdef(table.concat(new_lines, "\n")) return libnvim end +ffi.cdef = cimportstr +local syscall = require('syscall') +ffi.cdef = cdef + local function cppimport(path) return cimport(Paths.test_include_path .. '/' .. path) end @@ -219,6 +232,39 @@ do main.event_init() end +local sc + +if posix ~= nil then + sc = { + fork = posix.fork, + pipe = posix.pipe, + read = posix.read, + write = posix.write, + close = posix.close, + wait = posix.wait, + exit = posix._exit, + } +else + sc = { + fork = syscall.fork, + pipe = function() + local ret = {syscall.pipe()} + return ret[3], ret[4] + end, + read = function(rd, len) + return rd:read(nil, len) + end, + write = function(wr, s) + return wr:write(s) + end, + close = function(p) + return p:close() + end, + wait = syscall.wait, + exit = syscall.exit, + } +end + local function gen_itp(it) local function just_fail(_) return false @@ -230,36 +276,36 @@ local function gen_itp(it) 'assertion.just_fail.negative') local function itp(name, func) it(name, function() - local rd, wr = posix.pipe() - local pid = posix.fork() + local rd, wr = sc.pipe() + local pid = sc.fork() if pid == 0 then - posix.close(rd) + sc.close(rd) collectgarbage('stop') local err, emsg = pcall(func) collectgarbage('restart') emsg = tostring(emsg) if not err then - posix.write(wr, ('-\n%05u\n%s'):format(#emsg, emsg)) - posix.close(wr) - posix._exit(1) + sc.write(wr, ('-\n%05u\n%s'):format(#emsg, emsg)) + sc.close(wr) + sc.exit(1) else - posix.write(wr, '+\n') - posix.close(wr) - posix._exit(0) + sc.write(wr, '+\n') + sc.close(wr) + sc.exit(0) end else - posix.close(wr) - posix.wait(pid) - local res = posix.read(rd, 2) + sc.close(wr) + sc.wait(pid) + local res = sc.read(rd, 2) eq(2, #res) if res == '+\n' then return end eq('-\n', res) - local len_s = posix.read(rd, 5) + local len_s = sc.read(rd, 5) local len = tonumber(len_s) neq(0, len) - local err = posix.read(rd, len + 1) + local err = sc.read(rd, len + 1) assert.just_fail(err) end end) |