diff options
| author | Jędrzej Boczar <yendreij@gmail.com> | 2021-03-13 23:51:57 +0100 |
|---|---|---|
| committer | Kiyan <yazdani.kiyan@protonmail.com> | 2021-04-23 21:21:38 +0200 |
| commit | 4454459fb2ce64caaf1d0e32472ad7dcdbf3e436 (patch) | |
| tree | b8a48ceb3132e67a21698f8c1584c94b8f248278 | |
| parent | Initial sketch of automated indent tests (diff) | |
| download | nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar.gz nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar.bz2 nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar.lz nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar.xz nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.tar.zst nvim-treesitter-4454459fb2ce64caaf1d0e32472ad7dcdbf3e436.zip | |
tests/indent: add basic examples for C and Rust
| -rw-r--r-- | lua/nvim-treesitter/test_utils.lua | 15 | ||||
| -rw-r--r-- | lua/tests/indent/c/basic.c | 11 | ||||
| -rw-r--r-- | lua/tests/indent/c/no_braces.c | 6 | ||||
| -rw-r--r-- | lua/tests/indent/c_spec.lua | 18 | ||||
| -rw-r--r-- | lua/tests/indent/python_spec.lua | 9 | ||||
| -rw-r--r-- | lua/tests/indent/rust/basic.rs | 7 | ||||
| -rw-r--r-- | lua/tests/indent/rust_spec.lua | 17 |
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) |
