mirror of
https://github.com/neovim/neovim.git
synced 2026-02-20 17:29:54 +10:00
This is a better way to prevent parallel tests from interfering with each other, as there are many ways files can be created and deleted in tests, so enforcing different file names is hard. Using $TMPDIR can also work in most cases, but 'backipskip' etc. have special defaults for $TMPDIR. Symlink runtime/, src/, test/ and README.md to Xtest_xdg dir to make tests more convenient (and symlinking test/ is required for busted). Also, use README.md instead of test/README.md in the Ex mode inccommand test, as test/README.md no longer contains 'N' char.
110 lines
3.5 KiB
Lua
110 lines
3.5 KiB
Lua
-- Tests for filetype-plugin behavior (files in runtime/ftplugin/*).
|
|
|
|
local t = require('test.testutil')
|
|
local n = require('test.functional.testnvim')()
|
|
|
|
local exec_lua = n.exec_lua
|
|
local command = n.command
|
|
local eq = t.eq
|
|
|
|
---@param type string
|
|
---@return string
|
|
local function stdpath(type)
|
|
return exec_lua([[return vim.fs.abspath(vim.fn.stdpath(...))]], type)
|
|
end
|
|
|
|
---@return string
|
|
local function vimruntime()
|
|
return exec_lua [[ return vim.fs.abspath(vim.env.VIMRUNTIME) ]]
|
|
end
|
|
|
|
---@param module string
|
|
---@return string
|
|
local function lua_includeexpr(module)
|
|
return exec_lua([[return vim.fs.abspath(require 'vim._ftplugin.lua'.includeexpr(...))]], module)
|
|
end
|
|
|
|
describe("ftplugin: Lua 'includeexpr'", function()
|
|
local repo_root = vim.fs.normalize(t.paths.test_source_path)
|
|
local temp_dir = ''
|
|
|
|
setup(function()
|
|
temp_dir = t.tmpname(false)
|
|
n.clear()
|
|
n.api.nvim_set_current_dir(repo_root)
|
|
end)
|
|
|
|
teardown(function()
|
|
n.expect_exit(n.command, 'qall!')
|
|
n.rmdir(repo_root .. '/runtime/lua/foo/')
|
|
end)
|
|
|
|
before_each(function()
|
|
command(([[
|
|
edit `=stdpath('config') .. '/lua/user-foo/init.lua'`
|
|
write ++p
|
|
edit `=stdpath('config') .. '/lua/user-foo/bar.lua'`
|
|
write ++p
|
|
edit `=stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/init.lua'`
|
|
write ++p
|
|
edit `=stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/bar.lua'`
|
|
write ++p
|
|
|
|
edit runtime/lua/foo/init.lua
|
|
write ++p
|
|
edit runtime/lua/foo/bar/init.lua
|
|
write ++p
|
|
|
|
edit %s/lua/runtime-foo/init.lua
|
|
write ++p
|
|
edit %s/lua/runtime-foo/bar.lua
|
|
write ++p
|
|
|
|
edit %s/general-foo/bar/init.lua
|
|
write ++p
|
|
edit %s/general-foo/bar/baz.lua
|
|
write ++p
|
|
]]):format(temp_dir, temp_dir, temp_dir, temp_dir))
|
|
end)
|
|
|
|
it('finds module in current repo', function()
|
|
command [[ edit runtime/lua/vim/_ftplugin/lua.lua ]]
|
|
eq(repo_root .. '/runtime/lua/vim/_ftplugin/lua.lua', lua_includeexpr('vim._ftplugin.lua'))
|
|
eq(repo_root .. '/runtime/lua/editorconfig.lua', lua_includeexpr('editorconfig'))
|
|
eq(repo_root .. '/runtime/lua/foo/init.lua', lua_includeexpr('foo'))
|
|
eq(repo_root .. '/runtime/lua/foo/bar/init.lua', lua_includeexpr('foo.bar'))
|
|
end)
|
|
|
|
it('finds module in packpath/start', function()
|
|
eq(
|
|
stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/init.lua',
|
|
lua_includeexpr('plugin-foo')
|
|
)
|
|
eq(
|
|
stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/bar.lua',
|
|
lua_includeexpr('plugin-foo.bar')
|
|
)
|
|
end)
|
|
|
|
it('finds module in $VIMRUNTIME', function()
|
|
command('edit ' .. repo_root)
|
|
eq(vimruntime() .. '/lua/vim/_ftplugin/lua.lua', lua_includeexpr('vim._ftplugin.lua'))
|
|
eq(vimruntime() .. '/lua/editorconfig.lua', lua_includeexpr('editorconfig'))
|
|
end)
|
|
|
|
it('finds module in runtimepath', function()
|
|
eq(stdpath('config') .. '/lua/user-foo/init.lua', lua_includeexpr('user-foo'))
|
|
eq(stdpath('config') .. '/lua/user-foo/bar.lua', lua_includeexpr('user-foo.bar'))
|
|
command('set rtp+=' .. temp_dir)
|
|
eq(temp_dir .. '/lua/runtime-foo/init.lua', lua_includeexpr('runtime-foo'))
|
|
eq(temp_dir .. '/lua/runtime-foo/bar.lua', lua_includeexpr('runtime-foo.bar'))
|
|
end)
|
|
|
|
it('non-Nvim-style Lua modules', function()
|
|
command('cd ' .. temp_dir)
|
|
eq(temp_dir .. '/general-foo/bar/init.lua', lua_includeexpr('general-foo.bar'))
|
|
eq(temp_dir .. '/general-foo/bar/baz.lua', lua_includeexpr('general-foo.bar.baz'))
|
|
command('cd -')
|
|
end)
|
|
end)
|