aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/unit/buffer_spec.lua5
-rw-r--r--test/unit/formatc.lua14
-rw-r--r--test/unit/garray_spec.lua67
-rw-r--r--test/unit/helpers.lua63
-rw-r--r--test/unit/os/fs_spec.lua52
-rw-r--r--test/unit/os/shell_spec.lua4
-rw-r--r--test/unit/path_spec.lua4
-rw-r--r--test/unit/preprocess.lua8
-rw-r--r--test/unit/tempfile_spec.lua2
9 files changed, 125 insertions, 94 deletions
diff --git a/test/unit/buffer_spec.lua b/test/unit/buffer_spec.lua
index 11d99a7bcb..5244c2af86 100644
--- a/test/unit/buffer_spec.lua
+++ b/test/unit/buffer_spec.lua
@@ -9,11 +9,6 @@ local buffer = helpers.cimport("./src/nvim/buffer.h")
local window = helpers.cimport("./src/nvim/window.h")
local option = helpers.cimport("./src/nvim/option.h")
---{ Initialize the options needed for interacting with buffers
-window.win_alloc_first()
-option.set_init_1()
---}
-
describe('buffer functions', function()
local buflist_new = function(file, flags)
diff --git a/test/unit/formatc.lua b/test/unit/formatc.lua
index bafaf09310..792894f349 100644
--- a/test/unit/formatc.lua
+++ b/test/unit/formatc.lua
@@ -212,18 +212,21 @@ local function formatc(str)
return table.concat(result)
end
--- uncomment the following lines (and comment the return) for standalone
--- operation (very handy for debugging)
+-- standalone operation (very handy for debugging)
local function standalone(...)
Preprocess = require("preprocess")
Preprocess.add_to_include_path('./../../src')
Preprocess.add_to_include_path('./../../build/include')
Preprocess.add_to_include_path('./../../.deps/usr/include')
- input = Preprocess.preprocess_stream(arg[1])
+ local input = Preprocess.preprocess_stream(arg[1])
local raw = input:read('*all')
input:close()
+ if raw == nil then
+ print("ERROR: Preprocess.preprocess_stream():read() returned empty")
+ end
+
local formatted
if #arg == 2 and arg[2] == 'no' then
formatted = raw
@@ -233,6 +236,9 @@ local function standalone(...)
print(formatted)
end
+-- uncomment this line (and comment the `return`) for standalone debugging
+-- example usage:
+-- ../../.deps/usr/bin/luajit formatc.lua ../../include/tempfile.h.generated.h
+-- ../../.deps/usr/bin/luajit formatc.lua /usr/include/malloc.h
-- standalone(...)
-
return formatc
diff --git a/test/unit/garray_spec.lua b/test/unit/garray_spec.lua
index c0c6d7e9ce..e779cab8a7 100644
--- a/test/unit/garray_spec.lua
+++ b/test/unit/garray_spec.lua
@@ -10,7 +10,10 @@ local cstr = helpers.cstr
local to_cstr = helpers.to_cstr
local NULL = helpers.NULL
-local garray = cimport('./src/nvim/garray.h')
+local garray = cimport('stdlib.h', './src/nvim/garray.h')
+
+local itemsize = 14
+local growsize = 95
-- define a basic interface to garray. We could make it a lot nicer by
-- constructing a class wrapper around garray. It could for example associate
@@ -20,70 +23,70 @@ local garray = cimport('./src/nvim/garray.h')
-- how one would use it from C.
-- accessors
-function ga_len(garr)
+local ga_len = function(garr)
return garr[0].ga_len
end
-function ga_maxlen(garr)
+local ga_maxlen = function(garr)
return garr[0].ga_maxlen
end
-function ga_itemsize(garr)
+local ga_itemsize = function(garr)
return garr[0].ga_itemsize
end
-function ga_growsize(garr)
+local ga_growsize = function(garr)
return garr[0].ga_growsize
end
-function ga_data(garr)
+local ga_data = function(garr)
return garr[0].ga_data
end
-- derived accessors
-function ga_size(garr)
+local ga_size = function(garr)
return ga_len(garr) * ga_itemsize(garr)
end
-function ga_maxsize(garr)
+local ga_maxsize = function(garr)
return ga_maxlen(garr) * ga_itemsize(garr)
end
-function ga_data_as_bytes(garr)
+local ga_data_as_bytes = function(garr)
return ffi.cast('uint8_t *', ga_data(garr))
end
-function ga_data_as_strings(garr)
+local ga_data_as_strings = function(garr)
return ffi.cast('char **', ga_data(garr))
end
-function ga_data_as_ints(garr)
+local ga_data_as_ints = function(garr)
return ffi.cast('int *', ga_data(garr))
end
-- garray manipulation
-function ga_init(garr, itemsize, growsize)
+local ga_init = function(garr, itemsize, growsize)
return garray.ga_init(garr, itemsize, growsize)
end
-function ga_clear(garr)
+local ga_clear = function(garr)
return garray.ga_clear(garr)
end
-function ga_clear_strings(garr)
+local ga_clear_strings = function(garr)
assert.is_true(ga_itemsize(garr) == ffi.sizeof('char *'))
return garray.ga_clear_strings(garr)
end
-function ga_grow(garr, n)
+local ga_grow = function(garr, n)
return garray.ga_grow(garr, n)
end
-function ga_concat(garr, str)
+local ga_concat = function(garr, str)
return garray.ga_concat(garr, to_cstr(str))
end
-function ga_append(garr, b)
+local ga_append = function(garr, b)
if type(b) == 'string' then
return garray.ga_append(garr, string.byte(b))
else
@@ -91,31 +94,31 @@ function ga_append(garr, b)
end
end
-function ga_concat_strings(garr)
+local ga_concat_strings = function(garr)
return internalize(garray.ga_concat_strings(garr))
end
-function ga_concat_strings_sep(garr, sep)
+local ga_concat_strings_sep = function(garr, sep)
return internalize(garray.ga_concat_strings_sep(garr, to_cstr(sep)))
end
-function ga_remove_duplicate_strings(garr)
+local ga_remove_duplicate_strings = function(garr)
return garray.ga_remove_duplicate_strings(garr)
end
-- derived manipulators
-function ga_set_len(garr, len)
+local ga_set_len = function(garr, len)
assert.is_true(len <= ga_maxlen(garr))
garr[0].ga_len = len
end
-function ga_inc_len(garr, by)
+local ga_inc_len = function(garr, by)
return ga_set_len(garr, ga_len(garr) + 1)
end
-- custom append functions
-- not the C ga_append, which only works for bytes
-function ga_append_int(garr, it)
+local ga_append_int = function(garr, it)
assert.is_true(ga_itemsize(garr) == ffi.sizeof('int'))
ga_grow(garr, 1)
local data = ga_data_as_ints(garr)
@@ -123,7 +126,7 @@ function ga_append_int(garr, it)
return ga_inc_len(garr, 1)
end
-function ga_append_string(garr, it)
+local ga_append_string = function(garr, it)
assert.is_true(ga_itemsize(garr) == ffi.sizeof('char *'))
-- make a non-garbage collected string and copy the lua string into it,
-- TODO(aktau): we should probably call xmalloc here, though as long as
@@ -136,7 +139,7 @@ function ga_append_string(garr, it)
return ga_inc_len(garr, 1)
end
-function ga_append_strings(garr, ...)
+local ga_append_strings = function(garr, ...)
local prevlen = ga_len(garr)
local len = select('#', ...)
for i = 1, len do
@@ -145,7 +148,7 @@ function ga_append_strings(garr, ...)
return eq(prevlen + len, ga_len(garr))
end
-function ga_append_ints(garr, ...)
+local ga_append_ints = function(garr, ...)
local prevlen = ga_len(garr)
local len = select('#', ...)
for i = 1, len do
@@ -156,23 +159,23 @@ end
-- enhanced constructors
local garray_ctype = ffi.typeof('garray_T[1]')
-function new_garray()
+local new_garray = function()
local garr = garray_ctype()
return ffi.gc(garr, ga_clear)
end
-function new_string_garray()
+local new_string_garray = function()
local garr = garray_ctype()
- ga_init(garr, ffi.sizeof("char_u *"), 1)
+ ga_init(garr, ffi.sizeof("unsigned char *"), 1)
return ffi.gc(garr, ga_clear_strings)
end
-function randomByte()
+local randomByte = function()
return ffi.cast('uint8_t', math.random(0, 255))
end
-- scramble the data in a garray
-function ga_scramble(garr)
+local ga_scramble = function(garr)
local size, bytes = ga_size(garr), ga_data_as_bytes(garr)
for i = 0, size - 1 do
bytes[i] = randomByte()
@@ -180,8 +183,6 @@ function ga_scramble(garr)
end
describe('garray', function()
- local itemsize = 14
- local growsize = 95
describe('ga_init', function()
it('initializes the values of the garray', function()
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
diff --git a/test/unit/os/fs_spec.lua b/test/unit/os/fs_spec.lua
index 9233ce02c7..67ca8f6c24 100644
--- a/test/unit/os/fs_spec.lua
+++ b/test/unit/os/fs_spec.lua
@@ -15,16 +15,22 @@ local FAIL = helpers.FAIL
require('lfs')
require('bit')
+cimport('unistd.h')
local fs = cimport('./src/nvim/os/os.h')
cppimport('sys/stat.h')
cppimport('sys/fcntl.h')
cppimport('sys/errno.h')
-function assert_file_exists(filepath)
+local len = 0
+local buf = ""
+local directory = nil
+local executable_name = nil
+
+local function assert_file_exists(filepath)
eq(false, nil == (lfs.attributes(filepath, 'r')))
end
-function assert_file_does_not_exist(filepath)
+local function assert_file_does_not_exist(filepath)
eq(true, nil == (lfs.attributes(filepath, 'r')))
end
@@ -37,7 +43,7 @@ describe('fs function', function()
lfs.link('test.file', 'unit-test-directory/test_link.file', true)
-- Since the tests are executed, they are called by an executable. We use
-- that executable for several asserts.
- absolute_executable = arg[0]
+ local absolute_executable = arg[0]
-- Split absolute_executable into a directory and the actual file name for
-- later usage.
directory, executable_name = string.match(absolute_executable, '^(.*)/(.*)$')
@@ -52,7 +58,7 @@ describe('fs function', function()
end)
describe('os_dirname', function()
- function os_dirname(buf, len)
+ local function os_dirname(buf, len)
return fs.os_dirname(buf, len)
end
@@ -73,7 +79,7 @@ describe('fs function', function()
end)
end)
- function os_isdir(name)
+ local function os_isdir(name)
return fs.os_isdir((to_cstr(name)))
end
@@ -112,7 +118,7 @@ describe('fs function', function()
end)
describe('os_can_exe', function()
- function os_can_exe(name)
+ local function os_can_exe(name)
return fs.os_can_exe((to_cstr(name)))
end
@@ -142,39 +148,39 @@ describe('fs function', function()
end)
describe('file permissions', function()
- function os_getperm(filename)
+ local function os_getperm(filename)
local perm = fs.os_getperm((to_cstr(filename)))
return tonumber(perm)
end
- function os_setperm(filename, perm)
+ local function os_setperm(filename, perm)
return fs.os_setperm((to_cstr(filename)), perm)
end
- function os_fchown(filename, user_id, group_id)
+ local function os_fchown(filename, user_id, group_id)
local fd = ffi.C.open(filename, 0)
local res = fs.os_fchown(fd, user_id, group_id)
ffi.C.close(fd)
return res
end
- function os_file_is_readonly(filename)
+ local function os_file_is_readonly(filename)
return fs.os_file_is_readonly((to_cstr(filename)))
end
- function os_file_is_writable(filename)
+ local function os_file_is_writable(filename)
return fs.os_file_is_writable((to_cstr(filename)))
end
- function bit_set(number, check_bit)
+ local function bit_set(number, check_bit)
return 0 ~= (bit.band(number, check_bit))
end
- function set_bit(number, to_set)
+ local function set_bit(number, to_set)
return bit.bor(number, to_set)
end
- function unset_bit(number, to_unset)
+ local function unset_bit(number, to_unset)
return bit.band(number, (bit.bnot(to_unset)))
end
@@ -295,19 +301,19 @@ describe('fs function', function()
end)
describe('file operations', function()
- function os_file_exists(filename)
+ local function os_file_exists(filename)
return fs.os_file_exists((to_cstr(filename)))
end
- function os_rename(path, new_path)
+ local function os_rename(path, new_path)
return fs.os_rename((to_cstr(path)), (to_cstr(new_path)))
end
- function os_remove(path)
+ local function os_remove(path)
return fs.os_remove((to_cstr(path)))
end
- function os_open(path, flags, mode)
+ local function os_open(path, flags, mode)
return fs.os_open((to_cstr(path)), flags, mode)
end
@@ -428,11 +434,11 @@ describe('fs function', function()
end)
describe('folder operations', function()
- function os_mkdir(path, mode)
+ local function os_mkdir(path, mode)
return fs.os_mkdir(to_cstr(path), mode)
end
- function os_rmdir(path)
+ local function os_rmdir(path)
return fs.os_rmdir(to_cstr(path))
end
@@ -465,18 +471,18 @@ describe('fs function', function()
end)
describe('FileInfo', function()
- function file_info_new()
+ local function file_info_new()
local file_info = ffi.new('FileInfo[1]')
file_info[0].stat.st_ino = 0
file_info[0].stat.st_dev = 0
return file_info
end
- function is_file_info_filled(file_info)
+ local function is_file_info_filled(file_info)
return file_info[0].stat.st_ino > 0 and file_info[0].stat.st_dev > 0
end
- function file_id_new()
+ local function file_id_new()
local file_info = ffi.new('FileID[1]')
file_info[0].inode = 0
file_info[0].device_id = 0
diff --git a/test/unit/os/shell_spec.lua b/test/unit/os/shell_spec.lua
index 870034aad9..03aafe7e3c 100644
--- a/test/unit/os/shell_spec.lua
+++ b/test/unit/os/shell_spec.lua
@@ -24,11 +24,7 @@ local NULL = ffi.cast('void *', 0)
describe('shell functions', function()
setup(function()
- -- the logging functions are complain if I don't do this
- shell.init_homedir()
-
shell.event_init()
-
-- os_system() can't work when the p_sh and p_shcf variables are unset
shell.p_sh = to_cstr('/bin/bash')
shell.p_shcf = to_cstr('-c')
diff --git a/test/unit/path_spec.lua b/test/unit/path_spec.lua
index 15888c71b9..1824eaeccc 100644
--- a/test/unit/path_spec.lua
+++ b/test/unit/path_spec.lua
@@ -13,6 +13,7 @@ local OK = helpers.OK
local FAIL = helpers.FAIL
require('lfs')
+cimport('string.h')
local path = cimport('./src/nvim/path.h')
-- import constants parsed by ffi
@@ -22,6 +23,9 @@ local kBothFilesMissing = path.kBothFilesMissing
local kOneFileMissing = path.kOneFileMissing
local kEqualFileNames = path.kEqualFileNames
+local len = 0
+local buffer = nil
+
describe('path function', function()
describe('path_full_dir_name', function()
setup(function()
diff --git a/test/unit/preprocess.lua b/test/unit/preprocess.lua
index 2405270328..f17c7ba666 100644
--- a/test/unit/preprocess.lua
+++ b/test/unit/preprocess.lua
@@ -23,7 +23,7 @@ table.insert(ccs, {path = "/usr/bin/env clang", type = "clang"})
table.insert(ccs, {path = "/usr/bin/env icc", type = "gcc"})
local quote_me = '[^%w%+%-%=%@%_%/]' -- complement (needn't quote)
-function shell_quote(str)
+local function shell_quote(str)
if string.find(str, quote_me) or str == '' then
return "'" .. string.gsub(str, "'", [['"'"']]) .. "'"
else
@@ -32,7 +32,7 @@ function shell_quote(str)
end
-- parse Makefile format dependencies into a Lua table
-function parse_make_deps(deps)
+local function parse_make_deps(deps)
-- remove line breaks and line concatenators
deps = deps:gsub("\n", ""):gsub("\\", "")
-- remove the Makefile "target:" element
@@ -70,7 +70,7 @@ end
-- produces:
-- #include "vim.h"
-- #include "memory.h"
-function headerize(headers, global)
+local function headerize(headers, global)
local pre = '"'
local post = pre
if global then
@@ -166,7 +166,7 @@ local type_to_class = {
-- find the best cc. If os.exec causes problems on windows (like popping up
-- a console window) we might consider using something like this:
-- http://scite-ru.googlecode.com/svn/trunk/pack/tools/LuaLib/shell.html#exec
-function find_best_cc(ccs)
+local function find_best_cc(ccs)
for _, meta in pairs(ccs) do
local version = io.popen(tostring(meta.path) .. " -v 2>&1")
version:close()
diff --git a/test/unit/tempfile_spec.lua b/test/unit/tempfile_spec.lua
index e558ff04c8..6484a98b8f 100644
--- a/test/unit/tempfile_spec.lua
+++ b/test/unit/tempfile_spec.lua
@@ -4,6 +4,8 @@ local helpers = require 'test.unit.helpers'
local os = helpers.cimport './src/nvim/os/os.h'
local tempfile = helpers.cimport './src/nvim/tempfile.h'
+helpers.vim_init()
+
describe('tempfile related functions', function()
after_each(function()
tempfile.vim_deltempdir()