mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 11:06:54 -04:00
feat(tests)!: new infrastructure based on makefile
Problem: Not easy to run all checks and tests locally. Redundant CI workflows. Solution: Separate CI into two workflows: * lint: Lua files (stylua, luals), query files (valid captures, predicates, directives using tsqueryls), docs (SUPPORTED_LANGUAGES.md) -- does not need parser installation * tests: parsers (ABI compatibility), query files (tsqueryls on Linux/macOS; nvim on Windows), highlight and indent tests (separated for better readability) -- needs parser installation (but only once) Switch to https://github.com/nvim-treesitter/highlight-assertions fork with ABI 15 support. Run all tests (on Linux and macOS) through `make` (`formatlua`, `checklua`, `lintquery`, `formatquery`, `checkquery`, `docs`, `tests`), which downloads and caches all necessary dependencies. Remove `update-readme` workflow (replaced by lint job on PRs).
This commit is contained in:
parent
4e906caca3
commit
53dccb3a77
19 changed files with 269 additions and 272 deletions
|
|
@ -1,3 +1,4 @@
|
|||
local config = require('nvim-treesitter.config')
|
||||
local ts = vim.treesitter
|
||||
|
||||
local COMMENT_NODES = {
|
||||
|
|
@ -6,27 +7,20 @@ local COMMENT_NODES = {
|
|||
}
|
||||
|
||||
local function check_assertions(file)
|
||||
assert.same(
|
||||
1,
|
||||
vim.fn.executable('highlight-assertions'),
|
||||
'"highlight-assertions" not executable!'
|
||||
.. ' Get it via "cargo install --git https://github.com/theHamsta/highlight-assertions"'
|
||||
)
|
||||
local buf = vim.fn.bufadd(file)
|
||||
vim.fn.bufload(file)
|
||||
local ft = vim.bo[buf].filetype
|
||||
local lang = vim.treesitter.language.get_lang(ft) or ft
|
||||
local comment_node = COMMENT_NODES[lang] or 'comment'
|
||||
local assertions = vim.fn.json_decode(
|
||||
vim.fn.system(
|
||||
"highlight-assertions -p '"
|
||||
.. vim.api.nvim_get_runtime_file('parser/' .. lang .. '.so', false)[1]
|
||||
.. "' -s '"
|
||||
.. file
|
||||
.. "' -c "
|
||||
.. comment_node
|
||||
)
|
||||
)
|
||||
local assertions = vim.fn.json_decode(vim.fn.system({
|
||||
os.getenv('HLASSERT'),
|
||||
'-p',
|
||||
config.get_install_dir('parser') .. '/' .. lang .. '.so',
|
||||
'-s',
|
||||
file,
|
||||
'-c',
|
||||
comment_node,
|
||||
}))
|
||||
assert.True(#assertions > 0, 'No assertions detected!')
|
||||
|
||||
local parser = ts.get_parser(buf)
|
||||
|
|
|
|||
|
|
@ -6,24 +6,13 @@ local function check_assertions(file)
|
|||
vim.fn.bufload(file)
|
||||
local ft = vim.bo[buf].filetype
|
||||
local lang = vim.treesitter.language.get_lang(ft) or ft
|
||||
assert.same(
|
||||
1,
|
||||
vim.fn.executable('highlight-assertions'),
|
||||
'"highlight-assertions" not executable!'
|
||||
.. ' Get it via "cargo install --git https://github.com/theHamsta/highlight-assertions"'
|
||||
)
|
||||
local assertions = vim.fn.json_decode(
|
||||
vim.fn.system(
|
||||
"highlight-assertions -p '"
|
||||
.. config.get_install_dir('parser')
|
||||
.. '/'
|
||||
.. lang
|
||||
.. ".so'"
|
||||
.. " -s '"
|
||||
.. file
|
||||
.. "'"
|
||||
)
|
||||
)
|
||||
local assertions = vim.fn.json_decode(vim.fn.system({
|
||||
os.getenv('HLASSERT'),
|
||||
'-p',
|
||||
config.get_install_dir('parser') .. '/' .. lang .. '.so',
|
||||
'-s',
|
||||
file,
|
||||
}))
|
||||
local parser = ts.get_parser(buf, lang)
|
||||
|
||||
local top_level_root = parser:parse(true)[1]:root()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue