aboutsummaryrefslogtreecommitdiffstats
path: root/tests/indent/common.lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /tests/indent/common.lua
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'tests/indent/common.lua')
-rw-r--r--tests/indent/common.lua79
1 files changed, 41 insertions, 38 deletions
diff --git a/tests/indent/common.lua b/tests/indent/common.lua
index 6cfedafff..5c291070e 100644
--- a/tests/indent/common.lua
+++ b/tests/indent/common.lua
@@ -1,11 +1,11 @@
local M = {}
-local assert = require "luassert"
-local say = require "say"
-local scan_dir = require("plenary.scandir").scan_dir
-local Path = require "plenary.path"
+local assert = require('luassert')
+local say = require('say')
+local scan_dir = require('plenary.scandir').scan_dir
+local Path = require('plenary.path')
-M.XFAIL = "xfail"
+M.XFAIL = 'xfail'
local function same_indent(state, arguments)
local before = arguments[1]
@@ -14,11 +14,11 @@ local function same_indent(state, arguments)
local ok = true
local errors = { before = {}, after = {} }
for line = 1, #before do
- if #string.match(before[line], "^%s*") ~= #string.match(after[line], "^%s*") then
+ if #string.match(before[line], '^%s*') ~= #string.match(after[line], '^%s*') then
if before[line] and after[line] then
-- store the actual indentation length for each line
- errors.before[line] = #string.match(before[line], "^%s*")
- errors.after[line] = #string.match(after[line], "^%s*")
+ errors.before[line] = #string.match(before[line], '^%s*')
+ errors.after[line] = #string.match(after[line], '^%s*')
end
ok = false
end
@@ -42,39 +42,39 @@ local function format_indent(arg, fmtargs)
end
width = width + 3
- local header_fmt = "%8s %2s%-" .. tostring(width + 1) .. "s %s"
- local fmt = "%8s %2s |%-" .. tostring(width) .. "s |%s"
+ local header_fmt = '%8s %2s%-' .. tostring(width + 1) .. 's %s'
+ local fmt = '%8s %2s |%-' .. tostring(width) .. 's |%s'
- local output = { header_fmt:format("", "", "Found:", "Expected:") }
+ local output = { header_fmt:format('', '', 'Found:', 'Expected:') }
for i, line in ipairs(arg) do
if fmtargs.errors.before[i] then
- local indents = string.format("%d vs %d", fmtargs.errors.after[i], fmtargs.errors.before[i])
- table.insert(output, fmt:format(indents, "=>", fmtargs.other[i], line))
+ local indents = string.format('%d vs %d', fmtargs.errors.after[i], fmtargs.errors.before[i])
+ table.insert(output, fmt:format(indents, '=>', fmtargs.other[i], line))
else
- table.insert(output, fmt:format("", "", fmtargs.other[i], line))
+ table.insert(output, fmt:format('', '', fmtargs.other[i], line))
end
end
- return table.concat(output, "\n")
+ return table.concat(output, '\n')
end
-say:set_namespace "en"
-say:set("assertion.same_indent.positive", "Incorrect indentation\n%s")
-say:set("assertion.same_indent.negative", "Incorrect indentation\n%s")
+say:set_namespace('en')
+say:set('assertion.same_indent.positive', 'Incorrect indentation\n%s')
+say:set('assertion.same_indent.negative', 'Incorrect indentation\n%s')
assert:register(
- "assertion",
- "same_indent",
+ 'assertion',
+ 'same_indent',
same_indent,
- "assertion.same_indent.positive",
- "assert.same_indent.negative"
+ 'assertion.same_indent.positive',
+ 'assert.same_indent.negative'
)
-- Custom assertion better suited for indentation diffs
local function compare_indent(before, after, xfail)
assert:add_formatter(format_indent)
if xfail then
- io.stdout:write "Warning! Known failure of this test! Please help to fix it! "
+ io.stdout:write('Warning! Known failure of this test! Please help to fix it! ')
assert.is_not.same_indent(before, after)
else
assert.is.same_indent(before, after)
@@ -83,7 +83,8 @@ local function compare_indent(before, after, xfail)
end
local function set_buf_indent_opts(opts)
- local optnames = { "tabstop", "shiftwidth", "softtabstop", "expandtab", "filetype", "lispoptions" }
+ local optnames =
+ { 'tabstop', 'shiftwidth', 'softtabstop', 'expandtab', 'filetype', 'lispoptions' }
for _, opt in ipairs(optnames) do
if opts[opt] ~= nil then
vim.bo[opt] = opts[opt]
@@ -95,11 +96,11 @@ function M.run_indent_test(file, runner, opts)
assert.are.same(1, vim.fn.filereadable(file), string.format('File "%s" not readable', file))
-- load reference file
- vim.cmd(string.format("edit %s", file))
- vim.bo.indentexpr = "nvim_treesitter#indent()"
+ vim.cmd(string.format('edit %s', file))
+ vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
local before = vim.api.nvim_buf_get_lines(0, 0, -1, true)
- assert.are.same("nvim_treesitter#indent()", vim.bo.indentexpr)
+ assert.are.same("v:lua.require'nvim-treesitter'.indentexpr()", vim.bo.indentexpr)
set_buf_indent_opts(opts)
-- perform the test
@@ -109,14 +110,14 @@ function M.run_indent_test(file, runner, opts)
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!"
+ vim.cmd('edit!')
return before, after
end
function M.indent_whole_file(file, opts, xfail)
local before, after = M.run_indent_test(file, function()
- vim.cmd "silent normal gg=G"
+ vim.cmd('silent normal gg=G')
end, opts)
compare_indent(before, after, xfail)
@@ -132,22 +133,24 @@ end
function M.indent_new_line(file, spec, opts, xfail)
local before, after = M.run_indent_test(file, function()
-- move to the line and input the new one
- vim.cmd(string.format("normal! %dG", spec.on_line))
- vim.cmd(string.format("normal! o%s", spec.text))
+ vim.cmd(string.format('normal! %dG', spec.on_line))
+ vim.cmd(string.format('normal! o%s', spec.text))
end, opts)
- local indent = type(spec.indent) == "string" and spec.indent or string.rep(" ", spec.indent)
+ local indent = type(spec.indent) == 'string' and spec.indent or string.rep(' ', spec.indent)
table.insert(before, spec.on_line + 1, indent .. spec.text)
compare_indent(before, after, xfail)
before, after = M.run_indent_test(file, function()
-- move to the line and input the new one
- vim.cmd(string.format("normal! %dG$", spec.on_line))
- vim.cmd(string.format(vim.api.nvim_replace_termcodes("normal! a<cr>%s", true, true, true), spec.text))
+ vim.cmd(string.format('normal! %dG$', spec.on_line))
+ vim.cmd(
+ string.format(vim.api.nvim_replace_termcodes('normal! a<cr>%s', true, true, true), spec.text)
+ )
end, opts)
- indent = type(spec.indent) == "string" and spec.indent or string.rep(" ", spec.indent)
+ indent = type(spec.indent) == 'string' and spec.indent or string.rep(' ', spec.indent)
table.insert(before, spec.on_line + 1, indent .. spec.text)
compare_indent(before, after, xfail)
@@ -174,13 +177,13 @@ function Runner:whole_file(dirs, opts)
expected_failures = vim.tbl_map(function(f)
return Path:new(f):make_relative(self.base_dir.filename)
end, expected_failures)
- dirs = type(dirs) == "table" and dirs or { dirs }
+ dirs = type(dirs) == 'table' and dirs or { dirs }
dirs = vim.tbl_map(function(dir)
dir = self.base_dir / Path:new(dir)
assert.is.same(1, vim.fn.isdirectory(dir.filename))
return dir.filename
end, dirs)
- local files = require("nvim-treesitter.compat").flatten(vim.tbl_map(scan_dir, dirs))
+ local files = require('nvim-treesitter.compat').flatten(vim.tbl_map(scan_dir, dirs))
for _, file in ipairs(files) do
local relpath = Path:new(file):make_relative(self.base_dir.filename)
self.it(relpath, function()
@@ -191,7 +194,7 @@ end
function Runner:new_line(file, spec, title, xfail)
title = title and title or tostring(spec.on_line)
- self.it(string.format("%s[%s]", file, title), function()
+ self.it(string.format('%s[%s]', file, title), function()
local path = self.base_dir / file
M.indent_new_line(path.filename, spec, self.buf_opts, xfail)
end)