ci: format
This commit is contained in:
commit
e49a664d48
30 changed files with 1612 additions and 0 deletions
128
spec/diagnostic_spec.lua
Normal file
128
spec/diagnostic_spec.lua
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
local helpers = require('spec.helpers')
|
||||
|
||||
describe('diagnostic', function()
|
||||
local diagnostic
|
||||
|
||||
before_each(function()
|
||||
helpers.reset_config()
|
||||
diagnostic = require('render.diagnostic')
|
||||
end)
|
||||
|
||||
describe('clear', function()
|
||||
it('clears diagnostics for a buffer', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1', 'line2' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
vim.diagnostic.set(ns, bufnr, {
|
||||
{ lnum = 0, col = 0, message = 'test error', severity = vim.diagnostic.severity.ERROR },
|
||||
})
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal(1, #diags)
|
||||
|
||||
diagnostic.clear(bufnr)
|
||||
|
||||
diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal(0, #diags)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('set', function()
|
||||
it('sets diagnostics from error_parser output', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1', 'line2' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
|
||||
local parser = function()
|
||||
return {
|
||||
{ lnum = 0, col = 0, message = 'syntax error', severity = vim.diagnostic.severity.ERROR },
|
||||
}
|
||||
end
|
||||
|
||||
local ctx = { bufnr = bufnr, file = '/tmp/test.typ', root = '/tmp', ft = 'typst' }
|
||||
diagnostic.set(bufnr, 'typst', parser, 'error on line 1', ctx)
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal(1, #diags)
|
||||
assert.are.equal('syntax error', diags[1].message)
|
||||
assert.are.equal('typst', diags[1].source)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('sets source to provider name when not specified', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
|
||||
local parser = function()
|
||||
return {
|
||||
{ lnum = 0, col = 0, message = 'err', severity = vim.diagnostic.severity.ERROR },
|
||||
}
|
||||
end
|
||||
|
||||
local ctx = { bufnr = bufnr, file = '/tmp/test.tex', root = '/tmp', ft = 'tex' }
|
||||
diagnostic.set(bufnr, 'latexmk', parser, 'error', ctx)
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal('latexmk', diags[1].source)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('preserves existing source from parser', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
|
||||
local parser = function()
|
||||
return {
|
||||
{
|
||||
lnum = 0,
|
||||
col = 0,
|
||||
message = 'err',
|
||||
severity = vim.diagnostic.severity.ERROR,
|
||||
source = 'custom',
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
local ctx = { bufnr = bufnr, file = '/tmp/test.tex', root = '/tmp', ft = 'tex' }
|
||||
diagnostic.set(bufnr, 'latexmk', parser, 'error', ctx)
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal('custom', diags[1].source)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('handles parser failure gracefully', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
|
||||
local parser = function()
|
||||
error('parser exploded')
|
||||
end
|
||||
|
||||
local ctx = { bufnr = bufnr, file = '/tmp/test.tex', root = '/tmp', ft = 'tex' }
|
||||
|
||||
assert.has_no.errors(function()
|
||||
diagnostic.set(bufnr, 'latexmk', parser, 'error', ctx)
|
||||
end)
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal(0, #diags)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('does nothing when parser returns empty list', function()
|
||||
local bufnr = helpers.create_buffer({ 'line1' })
|
||||
local ns = diagnostic.get_namespace()
|
||||
|
||||
local parser = function()
|
||||
return {}
|
||||
end
|
||||
|
||||
local ctx = { bufnr = bufnr, file = '/tmp/test.tex', root = '/tmp', ft = 'tex' }
|
||||
diagnostic.set(bufnr, 'latexmk', parser, 'error', ctx)
|
||||
|
||||
local diags = vim.diagnostic.get(bufnr, { namespace = ns })
|
||||
assert.are.equal(0, #diags)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue