aboutsummaryrefslogtreecommitdiff
path: root/test/unit/helpers.moon
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/helpers.moon')
-rw-r--r--test/unit/helpers.moon33
1 files changed, 19 insertions, 14 deletions
diff --git a/test/unit/helpers.moon b/test/unit/helpers.moon
index 5705db88a6..c12a6473f6 100644
--- a/test/unit/helpers.moon
+++ b/test/unit/helpers.moon
@@ -3,24 +3,27 @@ ffi = require 'ffi'
-- load neovim shared library
libnvim = ffi.load './build/src/libnvim-test.so'
--- Luajit ffi parser only understands function signatures.
--- This helper function normalizes headers, passes to ffi and returns the
--- library pointer
+-- Luajit ffi parser doesn't understand preprocessor directives, so
+-- this helper function removes common directives before passing it the to ffi.
+-- It will return a pointer to the library table, emulating 'requires'
cimport = (path) ->
- -- Can't parse some of vim types, perhaps need to define those before
- -- automatically importing to ffi
-
- -- header_file = io.open path, 'rb'
- -- header = header_file\read '*a'
- -- header_file.close!
- -- header = string.gsub header, '#include[^\n]*\n', ''
- -- header = string.gsub header, '#ifndef[^\n]*\n', ''
- -- header = string.gsub header, '#define[^\n]*\n', ''
- -- header = string.gsub header, '#endif[^\n]*\n', ''
- -- ffi.cdef header
+ header_file = io.open path, 'rb'
+
+ if not header_file
+ error "cannot find #{path}"
+
+ header = header_file\read '*a'
+ header_file.close!
+ header = string.gsub header, '#include[^\n]*\n', ''
+ header = string.gsub header, '#ifndef[^\n]*\n', ''
+ header = string.gsub header, '#define[^\n]*\n', ''
+ header = string.gsub header, '#endif[^\n]*\n', ''
+ ffi.cdef header
return libnvim
+cimport './src/types.h'
+
-- take a pointer to a C-allocated string and return an interned
-- version while also freeing the memory
internalize = (cdata) ->
@@ -32,4 +35,6 @@ return {
internalize: internalize
eq: (expected, actual) -> assert.are.same expected, actual
ffi: ffi
+ lib: libnvim
+ cstr: ffi.typeof 'char[?]'
}