tests/indent: add basic examples for C and Rust

This commit is contained in:
Jędrzej Boczar 2021-03-13 23:51:57 +01:00 committed by Kiyan
parent 67f2c7149c
commit 4454459fb2
7 changed files with 80 additions and 3 deletions

View file

@ -1,6 +1,15 @@
local M = {}
function M.indent_whole_file(file)
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
end
end
function M.indent_whole_file(file, opts)
assert.are.same(1, vim.fn.filereadable(file))
-- load reference file
@ -11,8 +20,10 @@ function M.indent_whole_file(file)
vim.bo.indentexpr = 'nvim_treesitter#indent()'
assert.are.same('nvim_treesitter#indent()', vim.bo.indentexpr)
M.set_buf_indent_opts(opts)
-- indent the whole file
vim.cmd 'normal gg=G'
vim.cmd 'silent normal gg=G'
local indented = vim.api.nvim_buf_get_lines(0, 0, -1, true)
-- clear any changes to avoid 'No write since last change (add ! to override)'

View file

@ -0,0 +1,11 @@
int foo(int x)
{
if (x > 10) {
return x;
} else {
while (x > 0) {
x--;
}
return 0;
}
}

View file

@ -0,0 +1,6 @@
int foo(int x) {
if (x > 10)
return 10;
else
return x;
}

View file

@ -0,0 +1,18 @@
local whole_file = require('nvim-treesitter.test_utils').indent_whole_file
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
end)

View file

@ -14,6 +14,13 @@ describe('indent python', function()
'strings.py',
}
for _, file in ipairs(files) do
it(file, function() whole_file('lua/tests/indent/python/' .. file) end)
it(file, function()
whole_file('lua/tests/indent/python/' .. file, {
tabstop = 4,
shiftwidth = 4,
softtabstop = 0,
expandtab = true,
})
end)
end
end)

View file

@ -0,0 +1,7 @@
fn foo(x: i32) {
if (x > 10) {
return 10;
} else {
return x;
}
}

View file

@ -0,0 +1,17 @@
local whole_file = require('nvim-treesitter.test_utils').indent_whole_file
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
end)