mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-04 08:00:04 +08:00
205 lines
5.9 KiB
Lua
205 lines
5.9 KiB
Lua
pcall(require, "luacov")
|
|
|
|
local u = require("tests.utils")
|
|
local verify = require("tests.utils.verify")
|
|
|
|
local run_focus_command = function(command, expected_tree_node)
|
|
local winid = vim.api.nvim_get_current_win()
|
|
|
|
vim.cmd(command)
|
|
verify.window_handle_is_not(winid)
|
|
verify.buf_name_endswith("neo-tree filesystem [1]")
|
|
if expected_tree_node then
|
|
verify.filesystem_tree_node_is(expected_tree_node)
|
|
end
|
|
end
|
|
|
|
local run_show_command = function(command, expected_tree_node)
|
|
local starting_winid = vim.api.nvim_get_current_win()
|
|
local starting_bufname = vim.api.nvim_buf_get_name(0)
|
|
local expected_num_windows = #vim.api.nvim_list_wins() + 1
|
|
|
|
vim.cmd(command)
|
|
verify.eventually(500, function()
|
|
if #vim.api.nvim_list_wins() ~= expected_num_windows then
|
|
return false
|
|
end
|
|
if vim.api.nvim_get_current_win() ~= starting_winid then
|
|
return false
|
|
end
|
|
if vim.api.nvim_buf_get_name(0) ~= starting_bufname then
|
|
return false
|
|
end
|
|
if expected_tree_node then
|
|
verify.filesystem_tree_node_is(expected_tree_node)
|
|
end
|
|
return true
|
|
end, "Expected to see a new window without focusing it.")
|
|
end
|
|
|
|
describe("Filesystem", function()
|
|
local test = u.fs.init_test({
|
|
items = {
|
|
{
|
|
name = "foo",
|
|
type = "dir",
|
|
items = {
|
|
{
|
|
name = "bar",
|
|
type = "dir",
|
|
items = {
|
|
{ name = "baz1.txt", type = "file" },
|
|
{ name = "baz2.txt", type = "file", id = "deepfile2" },
|
|
},
|
|
},
|
|
{ name = "foofile1.txt", type = "file" },
|
|
},
|
|
},
|
|
{ name = "topfile1.txt", type = "file", id = "topfile1" },
|
|
},
|
|
})
|
|
|
|
test.setup()
|
|
|
|
local fs_tree = test.fs_tree
|
|
|
|
after_each(function()
|
|
u.clear_environment()
|
|
end)
|
|
|
|
describe("reveal command", function()
|
|
it("should reveal the current file in the sidebar", function()
|
|
local cmd = "NeoTreeReveal"
|
|
local testfile = fs_tree.lookup["topfile1"].abspath
|
|
u.editfile(testfile)
|
|
run_focus_command(cmd, testfile)
|
|
end)
|
|
|
|
it("should reveal the current file in the floating window", function()
|
|
local cmd = "NeoTreeFloat"
|
|
local testfile = fs_tree.lookup["./foo/bar/baz1.txt"].abspath
|
|
u.editfile(testfile)
|
|
run_focus_command(cmd, testfile)
|
|
end)
|
|
|
|
it("should toggle the reveal-state of the tree", function()
|
|
local cmd = "NeoTreeRevealToggle"
|
|
local testfile = fs_tree.lookup["./foo/foofile1.txt"].abspath
|
|
u.editfile(testfile)
|
|
|
|
-- toggle OPEN
|
|
run_focus_command(cmd, testfile)
|
|
local tree_winid = vim.api.nvim_get_current_win()
|
|
|
|
-- toggle CLOSE
|
|
vim.cmd(cmd)
|
|
verify.window_handle_is_not(tree_winid)
|
|
verify.buf_name_is(testfile)
|
|
|
|
-- toggle OPEN with a different file
|
|
testfile = fs_tree.lookup["./foo/bar/baz1.txt"].abspath
|
|
u.editfile(testfile)
|
|
run_focus_command(cmd, testfile)
|
|
end)
|
|
|
|
it("should toggle the reveal-state of the floating window", function()
|
|
local cmd = "NeoTreeFloatToggle"
|
|
local testfile = fs_tree.lookup["./foo/foofile1.txt"].abspath
|
|
u.editfile(testfile)
|
|
|
|
-- toggle OPEN
|
|
run_focus_command(cmd, testfile)
|
|
local tree_winid = vim.api.nvim_get_current_win()
|
|
|
|
-- toggle CLOSE
|
|
vim.cmd("NeoTreeRevealToggle")
|
|
verify.window_handle_is_not(tree_winid)
|
|
verify.buf_name_is(testfile)
|
|
vim.wait(1000)
|
|
|
|
-- toggle OPEN
|
|
testfile = fs_tree.lookup["./foo/bar/baz2.txt"].abspath
|
|
u.editfile(testfile)
|
|
run_focus_command(cmd, testfile)
|
|
end)
|
|
end)
|
|
|
|
for _, follow_current_file in ipairs({ true, false }) do
|
|
require("neo-tree").setup({
|
|
filesystem = {
|
|
follow_current_file = follow_current_file,
|
|
},
|
|
})
|
|
|
|
describe(string.format("w/ follow_current_file=%s", follow_current_file), function()
|
|
describe("show command", function()
|
|
it("should show the window without focusing", function()
|
|
local cmd = "NeoTreeShow"
|
|
local testfile = fs_tree.lookup["topfile1"].abspath
|
|
u.editfile(testfile)
|
|
run_show_command(cmd)
|
|
end)
|
|
|
|
it("should retain the focused node on next show", function()
|
|
local cmd = "NeoTreeShowToggle"
|
|
local topfile = fs_tree.lookup["topfile1"].abspath
|
|
local baz = fs_tree.lookup["./foo/bar/baz1.txt"].abspath
|
|
|
|
-- focus a sub node to see if state is retained
|
|
u.editfile(baz)
|
|
run_focus_command("NeoTreeReveal", baz)
|
|
local expected_tree_node = baz
|
|
|
|
verify.after(500, function()
|
|
-- toggle CLOSE
|
|
vim.cmd(cmd)
|
|
|
|
-- toggle OPEN
|
|
u.editfile(topfile)
|
|
if follow_current_file then
|
|
expected_tree_node = topfile
|
|
end
|
|
run_show_command(cmd, expected_tree_node)
|
|
return true
|
|
end)
|
|
end)
|
|
end)
|
|
|
|
describe("focus command", function()
|
|
it("should show the window and focus it", function()
|
|
local cmd = "NeoTreeFocus"
|
|
local testfile = fs_tree.lookup["topfile1"].abspath
|
|
u.editfile(testfile)
|
|
run_focus_command(cmd)
|
|
end)
|
|
|
|
it("should retain the focused node on next focus", function()
|
|
local cmd = "NeoTreeFocusToggle"
|
|
local topfile = fs_tree.lookup["topfile1"].abspath
|
|
local baz = fs_tree.lookup["./foo/bar/baz1.txt"].abspath
|
|
|
|
-- focus a sub node to see if state is retained
|
|
u.editfile(baz)
|
|
run_focus_command("NeoTreeReveal", baz)
|
|
local expected_tree_node = baz
|
|
|
|
verify.after(500, function()
|
|
-- toggle CLOSE
|
|
vim.cmd(cmd)
|
|
|
|
-- toggle OPEN
|
|
u.editfile(topfile)
|
|
if follow_current_file then
|
|
expected_tree_node = topfile
|
|
end
|
|
run_focus_command(cmd, expected_tree_node)
|
|
return true
|
|
end)
|
|
end)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
test.teardown()
|
|
end)
|