diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-09-29 09:43:52 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-09-30 17:37:16 -0300 |
commit | 42d5b526b9cbd067509e68ce6514a37e04df928a (patch) | |
tree | 0f5883a0dd231ed42222bf79ccb4cac7392de318 /test/functional/helpers.lua | |
parent | 4b0f524915ee0e94bf9ca24fb1c1014921e610d5 (diff) | |
download | rneovim-42d5b526b9cbd067509e68ce6514a37e04df928a.tar.gz rneovim-42d5b526b9cbd067509e68ce6514a37e04df928a.tar.bz2 rneovim-42d5b526b9cbd067509e68ce6514a37e04df928a.zip |
test: Replace vroom by lua/busted for functional tests
The 'lupa' python package provides a simple way to seamless integrate lua and
python code.
This commit replaces vroom by a python script that exposes the 'neovim' package
to a lua state, and invokes busted to run functional tests. This is a temporary
solution that will enable writing functional tests using lua/bused while a lua
client library is not available.
The reason for dropping vroom is flexibility: Lua/busted has a nice DSL-style
syntax while also providing the customization power of a full programming
language. Another reason is to use a single framework for unit/functional tests.
Two other changes were performed in this commit:
- Instead of "gcc-unittest/gcc-ia32", the travis builds for gcc are now
identified by "gcc/gcc-32". They will run unit/functional tests for both 64
and 32 bits.
- Old integration tests(in src/nvim/testdir) are now ran by the 'oldtest' target
Diffstat (limited to 'test/functional/helpers.lua')
-rw-r--r-- | test/functional/helpers.lua | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua new file mode 100644 index 0000000000..2b9ddfbe3c --- /dev/null +++ b/test/functional/helpers.lua @@ -0,0 +1,84 @@ +local function clear() + nvim_command('call BeforeEachTest()') +end + +local function feed(...) + for _, v in ipairs({...}) do + nvim_feed(nvim_replace_termcodes(dedent(v))) + end +end + +local function rawfeed(...) + for _, v in ipairs({...}) do + nvim_feed(dedent(v), 'nt') + end +end + +local function insert(...) + nvim_feed('i', 'nt') + rawfeed(...) + nvim_feed(nvim_replace_termcodes('<ESC>'), 'nt') +end + +local function execute(...) + for _, v in ipairs({...}) do + if v:sub(1, 1) ~= '/' then + -- not a search command, prefix with colon + nvim_feed(':', 'nt') + end + nvim_feed(v, 'nt') + nvim_feed(nvim_replace_termcodes('<CR>'), 'nt') + end +end + +local function expect(contents, first, last, buffer_index) + return assert.are.same(dedent(contents), + buffer_slice(first, last, buffer_idx)) +end + +rawfeed([[:function BeforeEachTest() + set all& + redir => groups + silent augroup + redir END + for group in split(groups) + exe 'augroup '.group + autocmd! + augroup END + endfor + autocmd! + tabnew + let curbufnum = eval(bufnr('%')) + redir => buflist + silent ls! + redir END + let bufnums = [] + for buf in split(buflist, '\n') + let bufnum = eval(split(buf, '[ u]')[0]) + if bufnum != curbufnum + call add(bufnums, bufnum) + endif + endfor + if len(bufnums) > 0 + exe 'silent bwipeout! '.join(bufnums, ' ') + endif + silent tabonly + for k in keys(g:) + exe 'unlet g:'.k + endfor + filetype plugin indent off + mapclear + mapclear! + abclear + comclear +endfunction +]]) + +return { + clear = clear, + rawfeed = rawfeed, + insert = insert, + feed = feed, + execute = execute, + expect = expect +} |