diff options
-rw-r--r-- | test/unit/helpers.lua | 50 | ||||
-rw-r--r-- | third-party/cmake/BuildLuarocks.cmake | 9 |
2 files changed, 58 insertions, 1 deletions
diff --git a/test/unit/helpers.lua b/test/unit/helpers.lua index 4af078b486..482bedd6c0 100644 --- a/test/unit/helpers.lua +++ b/test/unit/helpers.lua @@ -4,6 +4,9 @@ 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') local neq = global_helpers.neq local eq = global_helpers.eq @@ -216,6 +219,52 @@ do main.event_init() end +local function gen_itp(it) + local function just_fail(_) + return false + end + say:set('assertion.just_fail.positive', '%s') + say:set('assertion.just_fail.negative', '%s') + assert:register('assertion', 'just_fail', just_fail, + 'assertion.just_fail.positive', + 'assertion.just_fail.negative') + local function itp(name, func) + it(name, function() + local rd, wr = posix.pipe() + local pid = posix.fork() + if pid == 0 then + posix.close(rd) + local err, emsg = pcall(func) + emsg = tostring(emsg) + if not err then + posix.write(wr, ('-\n%05u\n%s'):format(#emsg, emsg)) + posix.close(wr) + posix._exit(1) + else + posix.write(wr, '+\n') + posix.close(wr) + posix._exit(0) + end + else + posix.close(wr) + posix.wait(pid) + local res = posix.read(rd, 2) + eq(2, #res) + if res == '+\n' then + return + end + eq('-\n', res) + local len_s = posix.read(rd, 5) + local len = tonumber(len_s) + neq(0, len) + local err = posix.read(rd, len + 1) + assert.just_fail(err) + end + end) + end + return itp +end + return { cimport = cimport, cppimport = cppimport, @@ -231,4 +280,5 @@ return { OK = OK, FAIL = FAIL, alloc_log_new = alloc_log_new, + gen_itp = gen_itp, } diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake index 9ea96b7cc5..6ab87b9bc3 100644 --- a/third-party/cmake/BuildLuarocks.cmake +++ b/third-party/cmake/BuildLuarocks.cmake @@ -172,5 +172,12 @@ if(USE_BUNDLED_BUSTED) add_custom_target(nvim-client DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/nvim-client) - list(APPEND THIRD_PARTY_DEPS busted luacheck nvim-client) + add_custom_command(OUTPUT ${HOSTDEPS_BIN_DIR}/luaposix + COMMAND ${LUAROCKS_BINARY} + ARGS build https://raw.githubusercontent.com/luaposix/luaposix/release-v33.4.0/luaposix-33.4.0-1.rockspec ${LUAROCKS_BUILDARGS} + DEPENDS luarocks) + add_custom_target(luaposix + DEPENDS ${HOSTDEPS_BIN_DIR}/luaposix) + + list(APPEND THIRD_PARTY_DEPS busted luacheck nvim-client luaposix) endif() |