test: more integration tests

This commit is contained in:
Steven Arcangeli 2022-10-27 08:02:42 -07:00
parent 6a8fd67801
commit fa67761027
5 changed files with 73 additions and 17 deletions

3
.github/pre-commit vendored
View file

@ -1,4 +1,5 @@
#!/bin/bash
set -e
luacheck .
luacheck lua tests
stylua --check .

View file

@ -2,7 +2,7 @@ max_comment_line_length = false
codes = true
exclude_files = {
"tests/",
"tests/treesitter",
}
ignore = {
@ -14,4 +14,6 @@ ignore = {
read_globals = {
"vim",
"a",
"assert",
}

View file

@ -0,0 +1,47 @@
require("plenary.async").tests.add_to_env()
local aerial = require("aerial")
local sleep = require("plenary.async.util").sleep
local loading = require("aerial.loading")
local test_util = require("tests.test_util")
local util = require("aerial.util")
---@param bufnr integer
---@return boolean
local function has_no_symbols(bufnr)
for _, line in ipairs(vim.api.nvim_buf_get_lines(bufnr, 0, -1, true)) do
if line:match("^%s*No symbols%s*$") then
return true
elseif not line:match("^%s*$") then
return false
end
end
return false
end
a.describe("config", function()
after_each(function()
test_util.reset_editor()
end)
a.it("attach_mode = 'window' updates symbols when changing to unsupported buffer", function()
aerial.setup({
lazy_load = false,
attach_mode = "window",
})
vim.cmd("edit README.md")
aerial.toggle({ focus = false })
local aerial_win = util.get_aerial_win(0)
assert.is_not_nil(aerial_win)
-- Wait for symbols to populate
sleep(1)
assert.falsy(has_no_symbols(vim.api.nvim_win_get_buf(aerial_win)))
vim.cmd("edit LICENSE")
-- Wait for autocmd to run and attached buffer to switch
sleep(10)
local aerial_buf = vim.api.nvim_win_get_buf(aerial_win)
assert.truthy(loading.is_loading(aerial_buf))
sleep(50)
assert.falsy(loading.is_loading(aerial_buf))
assert.truthy(has_no_symbols(vim.api.nvim_win_get_buf(aerial_win)))
end)
end)

View file

@ -1,20 +1,10 @@
require("plenary.async").tests.add_to_env()
local aerial = require("aerial")
local test_util = require("tests.test_util")
a.describe("config", function()
after_each(function()
aerial.setup({})
for i, winid in ipairs(vim.api.nvim_tabpage_list_wins(0)) do
if i > 1 then
vim.api.nvim_win_close(winid, true)
end
end
vim.api.nvim_win_set_buf(0, vim.api.nvim_create_buf(false, true))
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_get_option(bufnr, "buflisted") then
vim.api.nvim_buf_delete(bufnr, { force = true })
end
end
test_util.reset_editor()
end)
a.it("can open relative to the window, to the left", function()
@ -25,7 +15,7 @@ a.describe("config", function()
},
})
vim.cmd("edit README.md")
vim.cmd("AerialToggle")
aerial.toggle()
local winid = vim.api.nvim_tabpage_list_wins(0)[1]
local aer_bufnr = vim.api.nvim_win_get_buf(winid)
assert.equals("aerial", vim.api.nvim_buf_get_option(aer_bufnr, "filetype"))
@ -39,7 +29,7 @@ a.describe("config", function()
},
})
vim.cmd("edit README.md")
vim.cmd("AerialToggle")
aerial.toggle()
local winid = vim.api.nvim_tabpage_list_wins(0)[2]
local aer_bufnr = vim.api.nvim_win_get_buf(winid)
assert.equals("aerial", vim.api.nvim_buf_get_option(aer_bufnr, "filetype"))
@ -47,7 +37,7 @@ a.describe("config", function()
a.it("can open aerial in float", function()
vim.cmd("edit README.md")
vim.cmd("AerialToggle float")
aerial.toggle({ direction = "float" })
local winid = vim.api.nvim_tabpage_list_wins(0)[2]
local aer_bufnr = vim.api.nvim_win_get_buf(winid)
assert.equals("aerial", vim.api.nvim_buf_get_option(aer_bufnr, "filetype"))

View file

@ -89,4 +89,20 @@ M.assert_tree_equals = function(received, expected, path)
end
end
M.reset_editor = function()
require("aerial").setup({})
vim.cmd.tabonly()
for i, winid in ipairs(vim.api.nvim_tabpage_list_wins(0)) do
if i > 1 then
vim.api.nvim_win_close(winid, true)
end
end
vim.api.nvim_win_set_buf(0, vim.api.nvim_create_buf(false, true))
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_get_option(bufnr, "buflisted") then
vim.api.nvim_buf_delete(bufnr, { force = true })
end
end
end
return M