aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/test_utils.lua15
-rw-r--r--lua/tests/indent/c/basic.c11
-rw-r--r--lua/tests/indent/c/no_braces.c6
-rw-r--r--lua/tests/indent/c_spec.lua18
-rw-r--r--lua/tests/indent/python_spec.lua9
-rw-r--r--lua/tests/indent/rust/basic.rs7
-rw-r--r--lua/tests/indent/rust_spec.lua17
7 files changed, 80 insertions, 3 deletions
diff --git a/lua/nvim-treesitter/test_utils.lua b/lua/nvim-treesitter/test_utils.lua
index e3206b7dd..a62b23070 100644
--- a/lua/nvim-treesitter/test_utils.lua
+++ b/lua/nvim-treesitter/test_utils.lua
@@ -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)'
diff --git a/lua/tests/indent/c/basic.c b/lua/tests/indent/c/basic.c
new file mode 100644
index 000000000..b20b742d5
--- /dev/null
+++ b/lua/tests/indent/c/basic.c
@@ -0,0 +1,11 @@
+int foo(int x)
+{
+ if (x > 10) {
+ return x;
+ } else {
+ while (x > 0) {
+ x--;
+ }
+ return 0;
+ }
+}
diff --git a/lua/tests/indent/c/no_braces.c b/lua/tests/indent/c/no_braces.c
new file mode 100644
index 000000000..4c14ab05f
--- /dev/null
+++ b/lua/tests/indent/c/no_braces.c
@@ -0,0 +1,6 @@
+int foo(int x) {
+ if (x > 10)
+ return 10;
+ else
+ return x;
+}
diff --git a/lua/tests/indent/c_spec.lua b/lua/tests/indent/c_spec.lua
new file mode 100644
index 000000000..5176312b6
--- /dev/null
+++ b/lua/tests/indent/c_spec.lua
@@ -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)
diff --git a/lua/tests/indent/python_spec.lua b/lua/tests/indent/python_spec.lua
index 9fcdf4637..70017bde1 100644
--- a/lua/tests/indent/python_spec.lua
+++ b/lua/tests/indent/python_spec.lua
@@ -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)
diff --git a/lua/tests/indent/rust/basic.rs b/lua/tests/indent/rust/basic.rs
new file mode 100644
index 000000000..54d38cf68
--- /dev/null
+++ b/lua/tests/indent/rust/basic.rs
@@ -0,0 +1,7 @@
+fn foo(x: i32) {
+ if (x > 10) {
+ return 10;
+ } else {
+ return x;
+ }
+}
diff --git a/lua/tests/indent/rust_spec.lua b/lua/tests/indent/rust_spec.lua
new file mode 100644
index 000000000..374e3db6d
--- /dev/null
+++ b/lua/tests/indent/rust_spec.lua
@@ -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)