diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-03-04 11:26:37 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-03-04 11:26:37 -0300 |
commit | 34538a82f360da742ca40ea57c38ad40c99a17e7 (patch) | |
tree | 3c02f30eabe8481a7bb7df16e824012069ee0dae /test/unit/helpers.moon | |
parent | 0677e0ee9c991449fbe6503f3c55dc749d5fd573 (diff) | |
download | rneovim-34538a82f360da742ca40ea57c38ad40c99a17e7.tar.gz rneovim-34538a82f360da742ca40ea57c38ad40c99a17e7.tar.bz2 rneovim-34538a82f360da742ca40ea57c38ad40c99a17e7.zip |
Apply small refactor to unit tests
Redefine macro constants as enums in the ffi and import those in their
respective test modules.
Diffstat (limited to 'test/unit/helpers.moon')
-rw-r--r-- | test/unit/helpers.moon | 33 |
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[?]' } |