aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/test_utils.lua33
-rw-r--r--lua/tests/indent/c_spec.lua30
-rw-r--r--lua/tests/indent/python_spec.lua38
-rw-r--r--lua/tests/indent/rust_spec.lua29
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)