diff options
| author | Jędrzej Boczar <yendreij@gmail.com> | 2021-04-17 22:45:42 +0200 |
|---|---|---|
| committer | Kiyan <yazdani.kiyan@protonmail.com> | 2021-04-23 21:21:38 +0200 |
| commit | 77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3 (patch) | |
| tree | ba6c4bc6738930aba9db96b1ac3380a6b922f8ed /lua | |
| parent | scripts: print test results summary with --summary (diff) | |
| download | nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar.gz nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar.bz2 nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar.lz nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar.xz nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.tar.zst nvim-treesitter-77c97d0f8bdc16bdd2a0800fe66bf3ffddfe6ec3.zip | |
tests/indent: refactor indent test runner and auto-discover language test files
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/test_utils.lua | 33 | ||||
| -rw-r--r-- | lua/tests/indent/c_spec.lua | 30 | ||||
| -rw-r--r-- | lua/tests/indent/python_spec.lua | 38 | ||||
| -rw-r--r-- | lua/tests/indent/rust_spec.lua | 29 |
4 files changed, 66 insertions, 64 deletions
diff --git a/lua/nvim-treesitter/test_utils.lua b/lua/nvim-treesitter/test_utils.lua index a19c4048a..5665f3ab9 100644 --- a/lua/nvim-treesitter/test_utils.lua +++ b/lua/nvim-treesitter/test_utils.lua @@ -3,20 +3,20 @@ local M = {} local assert = require('luassert') function M.set_buf_indent_opts(opts) - local optnames = {'tabstop', 'shiftwidth', 'softtabstop', 'expandtab'} - for _, opt in ipairs(optnames) do - if opts[opt] ~= nil then - vim.bo[opt] = opts[opt] - end + local optnames = {'tabstop', 'shiftwidth', 'softtabstop', 'expandtab', 'filetype'} + for _, opt in ipairs(optnames) do + if opts[opt] ~= nil then + vim.bo[opt] = opts[opt] end + end end -function M.indent_whole_file(file, opts) +function M.run_indent_test(file, runner, opts) assert.are.same(1, vim.fn.filereadable(file)) -- load reference file vim.cmd(string.format('edit %s', file)) - local reference = vim.api.nvim_buf_get_lines(0, 0, -1, true) + local before = vim.api.nvim_buf_get_lines(0, 0, -1, true) -- FIXME: why this is not set automatically? vim.bo.indentexpr = 'nvim_treesitter#indent()' @@ -24,15 +24,24 @@ function M.indent_whole_file(file, opts) M.set_buf_indent_opts(opts) - -- indent the whole file - vim.cmd 'silent normal gg=G' - local indented = vim.api.nvim_buf_get_lines(0, 0, -1, true) + -- perform the test + runner() + + -- get file content after the test + local after = vim.api.nvim_buf_get_lines(0, 0, -1, true) -- clear any changes to avoid 'No write since last change (add ! to override)' vim.cmd 'edit!' - -- compare before and after - assert.are.same(reference, indented) + return before, after +end + +function M.indent_whole_file(file, opts) + local before, after = M.run_indent_test(file, function() + vim.cmd 'silent normal gg=G' + end, opts) + + assert.are.same(before, after) end return M diff --git a/lua/tests/indent/c_spec.lua b/lua/tests/indent/c_spec.lua index 5176312b6..386131036 100644 --- a/lua/tests/indent/c_spec.lua +++ b/lua/tests/indent/c_spec.lua @@ -1,18 +1,18 @@ local whole_file = require('nvim-treesitter.test_utils').indent_whole_file +local scan_dir = require('plenary.scandir').scan_dir -describe('indent C', function() - local files = { - 'basic.c', - 'no_braces.c', - } - for _, file in ipairs(files) do - it(file, function() - whole_file('lua/tests/indent/c/' .. file, { - tabstop = 4, - shiftwidth = 4, - softtabstop = 0, - expandtab = true, - }) - end) - end +describe('indent C:', function() + describe('whole file:', function() + local files = scan_dir('lua/tests/indent/c'); + for _, file in ipairs(files) do + it(vim.fn.fnamemodify(file, ':t'), function() + whole_file(file, { + tabstop = 4, + shiftwidth = 4, + softtabstop = 0, + expandtab = true, + }) + end) + end + end) end) diff --git a/lua/tests/indent/python_spec.lua b/lua/tests/indent/python_spec.lua index 70017bde1..1bdb4aa48 100644 --- a/lua/tests/indent/python_spec.lua +++ b/lua/tests/indent/python_spec.lua @@ -1,26 +1,18 @@ local whole_file = require('nvim-treesitter.test_utils').indent_whole_file +local scan_dir = require('plenary.scandir').scan_dir -describe('indent python', function() - local files = { - 'aligned_indent.py', - 'basic_blocks.py', - 'basic_collections.py', - 'branches.py', - 'comprehensions.py', - 'control_flow.py', - 'hanging_indent.py', - 'join_lines.py', - 'nested_collections.py', - 'strings.py', - } - for _, file in ipairs(files) do - it(file, function() - whole_file('lua/tests/indent/python/' .. file, { - tabstop = 4, - shiftwidth = 4, - softtabstop = 0, - expandtab = true, - }) - end) - end +describe('indent Python:', function() + describe('whole file:', function() + local files = scan_dir('lua/tests/indent/python'); + for _, file in ipairs(files) do + it(vim.fn.fnamemodify(file, ':t'), function() + whole_file(file, { + tabstop = 4, + shiftwidth = 4, + softtabstop = 0, + expandtab = true, + }) + end) + end + end) end) diff --git a/lua/tests/indent/rust_spec.lua b/lua/tests/indent/rust_spec.lua index 374e3db6d..ad9e948c4 100644 --- a/lua/tests/indent/rust_spec.lua +++ b/lua/tests/indent/rust_spec.lua @@ -1,17 +1,18 @@ local whole_file = require('nvim-treesitter.test_utils').indent_whole_file +local scan_dir = require('plenary.scandir').scan_dir -describe('indent rust', function() - local files = { - 'basic.rs', - } - for _, file in ipairs(files) do - it(file, function() - whole_file('lua/tests/indent/rust/' .. file, { - tabstop = 4, - shiftwidth = 4, - softtabstop = 0, - expandtab = true, - }) - end) - end +describe('indent Rust:', function() + describe('whole file:', function() + local files = scan_dir('lua/tests/indent/rust'); + for _, file in ipairs(files) do + it(vim.fn.fnamemodify(file, ':t'), function() + whole_file(file, { + tabstop = 4, + shiftwidth = 4, + softtabstop = 0, + expandtab = true, + }) + end) + end + end) end) |
