diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2025-04-29 19:40:18 +0200 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:41 +0200 |
| commit | 53dccb3a77da54a4e428275e8b44dbff77e0d47d (patch) | |
| tree | 921e2ba83265f6cba3e828b3100692255e33f359 /tests/query | |
| parent | refactor(locals): fix type annotations and warnings (diff) | |
| download | nvim-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.lua | 26 | ||||
| -rw-r--r-- | tests/query/injection_spec.lua | 25 |
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() |
