ci: format
This commit is contained in:
commit
e49a664d48
30 changed files with 1612 additions and 0 deletions
176
spec/compiler_spec.lua
Normal file
176
spec/compiler_spec.lua
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
local helpers = require('spec.helpers')
|
||||
|
||||
describe('compiler', function()
|
||||
local compiler
|
||||
|
||||
before_each(function()
|
||||
helpers.reset_config()
|
||||
compiler = require('render.compiler')
|
||||
end)
|
||||
|
||||
describe('compile', function()
|
||||
it('spawns a process and tracks it in active table', function()
|
||||
local bufnr = helpers.create_buffer({ 'hello' }, 'text')
|
||||
vim.api.nvim_buf_set_name(bufnr, '/tmp/render_test.txt')
|
||||
vim.bo[bufnr].modified = false
|
||||
|
||||
local provider = { cmd = { 'echo', 'ok' } }
|
||||
local ctx = {
|
||||
bufnr = bufnr,
|
||||
file = '/tmp/render_test.txt',
|
||||
root = '/tmp',
|
||||
ft = 'text',
|
||||
}
|
||||
|
||||
compiler.compile(bufnr, 'echo', provider, ctx)
|
||||
local active = compiler._test.active
|
||||
assert.is_not_nil(active[bufnr])
|
||||
assert.are.equal('echo', active[bufnr].provider)
|
||||
|
||||
vim.wait(2000, function()
|
||||
return active[bufnr] == nil
|
||||
end, 50)
|
||||
|
||||
assert.is_nil(active[bufnr])
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('fires RenderCompileStarted event', function()
|
||||
local bufnr = helpers.create_buffer({ 'hello' }, 'text')
|
||||
vim.api.nvim_buf_set_name(bufnr, '/tmp/render_test_event.txt')
|
||||
vim.bo[bufnr].modified = false
|
||||
|
||||
local fired = false
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'RenderCompileStarted',
|
||||
once = true,
|
||||
callback = function()
|
||||
fired = true
|
||||
end,
|
||||
})
|
||||
|
||||
local provider = { cmd = { 'echo', 'ok' } }
|
||||
local ctx = {
|
||||
bufnr = bufnr,
|
||||
file = '/tmp/render_test_event.txt',
|
||||
root = '/tmp',
|
||||
ft = 'text',
|
||||
}
|
||||
|
||||
compiler.compile(bufnr, 'echo', provider, ctx)
|
||||
assert.is_true(fired)
|
||||
|
||||
vim.wait(2000, function()
|
||||
return compiler._test.active[bufnr] == nil
|
||||
end, 50)
|
||||
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('fires RenderCompileSuccess on exit code 0', function()
|
||||
local bufnr = helpers.create_buffer({ 'hello' }, 'text')
|
||||
vim.api.nvim_buf_set_name(bufnr, '/tmp/render_test_success.txt')
|
||||
vim.bo[bufnr].modified = false
|
||||
|
||||
local succeeded = false
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'RenderCompileSuccess',
|
||||
once = true,
|
||||
callback = function()
|
||||
succeeded = true
|
||||
end,
|
||||
})
|
||||
|
||||
local provider = { cmd = { 'true' } }
|
||||
local ctx = {
|
||||
bufnr = bufnr,
|
||||
file = '/tmp/render_test_success.txt',
|
||||
root = '/tmp',
|
||||
ft = 'text',
|
||||
}
|
||||
|
||||
compiler.compile(bufnr, 'truecmd', provider, ctx)
|
||||
|
||||
vim.wait(2000, function()
|
||||
return succeeded
|
||||
end, 50)
|
||||
|
||||
assert.is_true(succeeded)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('fires RenderCompileFailed on non-zero exit', function()
|
||||
local bufnr = helpers.create_buffer({ 'hello' }, 'text')
|
||||
vim.api.nvim_buf_set_name(bufnr, '/tmp/render_test_fail.txt')
|
||||
vim.bo[bufnr].modified = false
|
||||
|
||||
local failed = false
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'RenderCompileFailed',
|
||||
once = true,
|
||||
callback = function()
|
||||
failed = true
|
||||
end,
|
||||
})
|
||||
|
||||
local provider = { cmd = { 'false' } }
|
||||
local ctx = {
|
||||
bufnr = bufnr,
|
||||
file = '/tmp/render_test_fail.txt',
|
||||
root = '/tmp',
|
||||
ft = 'text',
|
||||
}
|
||||
|
||||
compiler.compile(bufnr, 'falsecmd', provider, ctx)
|
||||
|
||||
vim.wait(2000, function()
|
||||
return failed
|
||||
end, 50)
|
||||
|
||||
assert.is_true(failed)
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('stop', function()
|
||||
it('does nothing when no process is active', function()
|
||||
assert.has_no.errors(function()
|
||||
compiler.stop(999)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('status', function()
|
||||
it('returns idle for buffer with no process', function()
|
||||
local s = compiler.status(42)
|
||||
assert.is_false(s.compiling)
|
||||
end)
|
||||
|
||||
it('returns compiling during active process', function()
|
||||
local bufnr = helpers.create_buffer({ 'hello' }, 'text')
|
||||
vim.api.nvim_buf_set_name(bufnr, '/tmp/render_test_status.txt')
|
||||
vim.bo[bufnr].modified = false
|
||||
|
||||
local provider = { cmd = { 'sleep', '10' } }
|
||||
local ctx = {
|
||||
bufnr = bufnr,
|
||||
file = '/tmp/render_test_status.txt',
|
||||
root = '/tmp',
|
||||
ft = 'text',
|
||||
}
|
||||
|
||||
compiler.compile(bufnr, 'sleepcmd', provider, ctx)
|
||||
local s = compiler.status(bufnr)
|
||||
assert.is_true(s.compiling)
|
||||
assert.are.equal('sleepcmd', s.provider)
|
||||
|
||||
compiler.stop(bufnr)
|
||||
|
||||
vim.wait(2000, function()
|
||||
return compiler._test.active[bufnr] == nil
|
||||
end, 50)
|
||||
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue