mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test(editorconfig): add editorconfig tests
This commit is contained in:
parent
6663c5fabd
commit
e88cdc9a0f
194
test/functional/plugin/editorconfig_spec.lua
Normal file
194
test/functional/plugin/editorconfig_spec.lua
Normal file
@ -0,0 +1,194 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local clear = helpers.clear
|
||||
local command = helpers.command
|
||||
local eq = helpers.eq
|
||||
local pathsep = helpers.get_pathsep()
|
||||
local curbufmeths = helpers.curbufmeths
|
||||
|
||||
local testdir = 'Xtest-editorconfig'
|
||||
|
||||
local function test_case(name, expected)
|
||||
local filename = testdir .. pathsep .. name
|
||||
command('edit ' .. filename)
|
||||
for opt, val in pairs(expected) do
|
||||
eq(val, curbufmeths.get_option(opt), name)
|
||||
end
|
||||
end
|
||||
|
||||
setup(function()
|
||||
helpers.mkdir_p(testdir)
|
||||
helpers.write_file(
|
||||
testdir .. pathsep .. '.editorconfig',
|
||||
[[
|
||||
root = true
|
||||
|
||||
[3_space.txt]
|
||||
indent_style = space
|
||||
indent_size = 3
|
||||
tab_width = 3
|
||||
|
||||
[4_space.py]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
tab_width = 8
|
||||
|
||||
[space.txt]
|
||||
indent_style = space
|
||||
indent_size = tab
|
||||
|
||||
[tab.txt]
|
||||
indent_style = tab
|
||||
|
||||
[4_tab.txt]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
tab_width = 4
|
||||
|
||||
[4_tab_width_of_8.txt]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
tab_width = 8
|
||||
|
||||
[lf.txt]
|
||||
end_of_line = lf
|
||||
|
||||
[crlf.txt]
|
||||
end_of_line = crlf
|
||||
|
||||
[cr.txt]
|
||||
end_of_line = cr
|
||||
|
||||
[utf-8.txt]
|
||||
charset = utf-8
|
||||
|
||||
[utf-8-bom.txt]
|
||||
charset = utf-8-bom
|
||||
|
||||
[utf-16be.txt]
|
||||
charset = utf-16be
|
||||
|
||||
[utf-16le.txt]
|
||||
charset = utf-16le
|
||||
|
||||
[latin1.txt]
|
||||
charset = latin1
|
||||
|
||||
[with_newline.txt]
|
||||
insert_final_newline = true
|
||||
|
||||
[without_newline.txt]
|
||||
insert_final_newline = false
|
||||
|
||||
[trim.txt]
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[no_trim.txt]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[max_line_length.txt]
|
||||
max_line_length = 42
|
||||
]]
|
||||
)
|
||||
end)
|
||||
|
||||
teardown(function()
|
||||
helpers.rmdir(testdir)
|
||||
end)
|
||||
|
||||
describe('editorconfig', function()
|
||||
before_each(function()
|
||||
-- Remove -u NONE so that plugins (i.e. editorconfig.lua) are loaded
|
||||
clear({ args_rm = { '-u' } })
|
||||
end)
|
||||
|
||||
it('sets indent options', function()
|
||||
test_case('3_space.txt', {
|
||||
expandtab = true,
|
||||
shiftwidth = 3,
|
||||
softtabstop = -1,
|
||||
tabstop = 3,
|
||||
})
|
||||
|
||||
test_case('4_space.py', {
|
||||
expandtab = true,
|
||||
shiftwidth = 4,
|
||||
softtabstop = -1,
|
||||
tabstop = 8,
|
||||
})
|
||||
|
||||
test_case('space.txt', {
|
||||
expandtab = true,
|
||||
shiftwidth = 0,
|
||||
softtabstop = 0,
|
||||
})
|
||||
|
||||
test_case('tab.txt', {
|
||||
expandtab = false,
|
||||
shiftwidth = 0,
|
||||
softtabstop = 0,
|
||||
})
|
||||
|
||||
test_case('4_tab.txt', {
|
||||
expandtab = false,
|
||||
shiftwidth = 4,
|
||||
softtabstop = -1,
|
||||
tabstop = 4,
|
||||
})
|
||||
|
||||
test_case('4_tab_width_of_8.txt', {
|
||||
expandtab = false,
|
||||
shiftwidth = 4,
|
||||
softtabstop = -1,
|
||||
tabstop = 8,
|
||||
})
|
||||
end)
|
||||
|
||||
it('sets end-of-line options', function()
|
||||
test_case('lf.txt', { fileformat = 'unix' })
|
||||
test_case('crlf.txt', { fileformat = 'dos' })
|
||||
test_case('cr.txt', { fileformat = 'mac' })
|
||||
end)
|
||||
|
||||
it('sets encoding options', function()
|
||||
test_case('utf-8.txt', { fileencoding = 'utf-8', bomb = false })
|
||||
test_case('utf-8-bom.txt', { fileencoding = 'utf-8', bomb = true })
|
||||
test_case('utf-16be.txt', { fileencoding = 'utf-16', bomb = false })
|
||||
test_case('utf-16le.txt', { fileencoding = 'utf-16le', bomb = false })
|
||||
test_case('latin1.txt', { fileencoding = 'latin1', bomb = false })
|
||||
end)
|
||||
|
||||
it('sets newline options', function()
|
||||
test_case('with_newline.txt', { fixendofline = true, endofline = true })
|
||||
test_case('without_newline.txt', { fixendofline = false, endofline = false })
|
||||
end)
|
||||
|
||||
it('respects trim_trailing_whitespace', function()
|
||||
local filename = testdir .. pathsep .. 'trim.txt'
|
||||
-- luacheck: push ignore 613
|
||||
local untrimmed = [[
|
||||
This line ends in whitespace
|
||||
So does this one
|
||||
And this one
|
||||
But not this one
|
||||
]]
|
||||
-- luacheck: pop
|
||||
local trimmed = untrimmed:gsub('%s+\n', '\n')
|
||||
|
||||
helpers.write_file(filename, untrimmed)
|
||||
command('edit ' .. filename)
|
||||
command('write')
|
||||
command('bdelete')
|
||||
eq(trimmed, helpers.read_file(filename))
|
||||
|
||||
filename = testdir .. pathsep .. 'no_trim.txt'
|
||||
helpers.write_file(filename, untrimmed)
|
||||
command('edit ' .. filename)
|
||||
command('write')
|
||||
command('bdelete')
|
||||
eq(untrimmed, helpers.read_file(filename))
|
||||
end)
|
||||
|
||||
it('sets textwidth', function()
|
||||
test_case('max_line_length.txt', { textwidth = 42 })
|
||||
end)
|
||||
end)
|
Loading…
Reference in New Issue
Block a user