aboutsummaryrefslogtreecommitdiffstats
path: root/tests/query
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2025-04-29 19:40:18 +0200
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:41 +0200
commit53dccb3a77da54a4e428275e8b44dbff77e0d47d (patch)
tree921e2ba83265f6cba3e828b3100692255e33f359 /tests/query
parentrefactor(locals): fix type annotations and warnings (diff)
downloadnvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar.gz
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar.bz2
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar.lz
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar.xz
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.tar.zst
nvim-treesitter-53dccb3a77da54a4e428275e8b44dbff77e0d47d.zip
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).
Diffstat (limited to 'tests/query')
-rw-r--r--tests/query/highlights_spec.lua26
-rw-r--r--tests/query/injection_spec.lua25
2 files changed, 17 insertions, 34 deletions
diff --git a/tests/query/highlights_spec.lua b/tests/query/highlights_spec.lua
index 0529af4a4..e59feb9f4 100644
--- a/tests/query/highlights_spec.lua
+++ b/tests/query/highlights_spec.lua
@@ -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)
diff --git a/tests/query/injection_spec.lua b/tests/query/injection_spec.lua
index e90925e20..63734dd5b 100644
--- a/tests/query/injection_spec.lua
+++ b/tests/query/injection_spec.lua
@@ -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()