mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00

Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable stylua for entire `test/` directory. - Exclude these high-churn files until this issue is resolved: https://github.com/JohnnyMorganz/StyLua/issues/829 ``` test/functional/ui/decorations_spec.lua | 3560 ++++++++++++++++++++++++++++++++++++---------------- test/functional/ui/float_spec.lua | 5826 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/multigrid_spec.lua | 1349 ++++++++++++++------ ``` - Make surgical changes to these files (or add `stylua: ignore` in some small scopes) to improve the result: ``` test/functional/vimscript/msgpack_functions_spec.lua | 1414 +++++++++++++++------ test/functional/api/buffer_spec.lua | 1389 +++++++++++---------- test/functional/api/vim_spec.lua | 2740 +++++++++++++++++++++++----------------- ``` - These "high churn" files are NOT excluded because the changes are largely an improvement: ``` test/functional/plugin/lsp_spec.lua | 2198 ++++++++++++++++++--------------- test/functional/plugin/shada_spec.lua | 4078 +++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/cmdline_spec.lua | 1199 +++++++++++------- test/functional/ui/popupmenu_spec.lua | 1267 +++++++++++-------- test/functional/ui/messages_spec.lua | 1643 +++++++++++++++--------- ``` - TODO: how to check "all directories"? With `GLOB_DIRS *` and `/.deps/` (or `.deps/`) in `.styluaignore`, Lua code in `.deps/` is still checked...
109 lines
5.4 KiB
Lua
109 lines
5.4 KiB
Lua
local helpers = require('test.functional.helpers')(after_each)
|
|
|
|
local eq = helpers.eq
|
|
local clear = helpers.clear
|
|
local meths = helpers.meths
|
|
local exc_exec = helpers.exc_exec
|
|
local rmdir = helpers.rmdir
|
|
local write_file = helpers.write_file
|
|
local mkdir = helpers.mkdir
|
|
|
|
local testdir = 'Xtest-functional-spell-spellfile.d'
|
|
|
|
describe('spellfile', function()
|
|
before_each(function()
|
|
clear()
|
|
rmdir(testdir)
|
|
mkdir(testdir)
|
|
mkdir(testdir .. '/spell')
|
|
end)
|
|
after_each(function()
|
|
rmdir(testdir)
|
|
end)
|
|
-- ┌ Magic string (#VIMSPELLMAGIC)
|
|
-- │ ┌ Spell file version (#VIMSPELLVERSION)
|
|
local spellheader = 'VIMspell\050'
|
|
it('errors out when prefcond section is truncated', function()
|
|
meths.set_option_value('runtimepath', testdir, {})
|
|
-- stylua: ignore
|
|
write_file(testdir .. '/spell/en.ascii.spl',
|
|
-- ┌ Section identifier (#SN_PREFCOND)
|
|
-- │ ┌ Section flags (#SNF_REQUIRED or zero)
|
|
-- │ │ ┌ Section length (4 bytes, MSB first)
|
|
spellheader .. '\003\001\000\000\000\003'
|
|
-- ┌ Number of regexes in section (2 bytes, MSB first)
|
|
-- │ ┌ Condition length (1 byte)
|
|
-- │ │ ┌ Condition regex (missing!)
|
|
.. '\000\001\001')
|
|
meths.set_option_value('spelllang', 'en', {})
|
|
eq('Vim(set):E758: Truncated spell file', exc_exec('set spell'))
|
|
end)
|
|
it('errors out when prefcond regexp contains NUL byte', function()
|
|
meths.set_option_value('runtimepath', testdir, {})
|
|
-- stylua: ignore
|
|
write_file(testdir .. '/spell/en.ascii.spl',
|
|
-- ┌ Section identifier (#SN_PREFCOND)
|
|
-- │ ┌ Section flags (#SNF_REQUIRED or zero)
|
|
-- │ │ ┌ Section length (4 bytes, MSB first)
|
|
spellheader .. '\003\001\000\000\000\008'
|
|
-- ┌ Number of regexes in section (2 bytes, MSB first)
|
|
-- │ ┌ Condition length (1 byte)
|
|
-- │ │ ┌ Condition regex
|
|
-- │ │ │ ┌ End of sections marker
|
|
.. '\000\001\005ab\000cd\255'
|
|
-- ┌ LWORDTREE tree length (4 bytes)
|
|
-- │ ┌ KWORDTREE tree length (4 bytes)
|
|
-- │ │ ┌ PREFIXTREE tree length
|
|
.. '\000\000\000\000\000\000\000\000\000\000\000\000')
|
|
meths.set_option_value('spelllang', 'en', {})
|
|
eq('Vim(set):E759: Format error in spell file', exc_exec('set spell'))
|
|
end)
|
|
it('errors out when region contains NUL byte', function()
|
|
meths.set_option_value('runtimepath', testdir, {})
|
|
-- stylua: ignore
|
|
write_file(testdir .. '/spell/en.ascii.spl',
|
|
-- ┌ Section identifier (#SN_REGION)
|
|
-- │ ┌ Section flags (#SNF_REQUIRED or zero)
|
|
-- │ │ ┌ Section length (4 bytes, MSB first)
|
|
spellheader .. '\000\001\000\000\000\008'
|
|
-- ┌ Regions ┌ End of sections marker
|
|
.. '01234\00067\255'
|
|
-- ┌ LWORDTREE tree length (4 bytes)
|
|
-- │ ┌ KWORDTREE tree length (4 bytes)
|
|
-- │ │ ┌ PREFIXTREE tree length
|
|
.. '\000\000\000\000\000\000\000\000\000\000\000\000')
|
|
meths.set_option_value('spelllang', 'en', {})
|
|
eq('Vim(set):E759: Format error in spell file', exc_exec('set spell'))
|
|
end)
|
|
it('errors out when SAL section contains NUL byte', function()
|
|
meths.set_option_value('runtimepath', testdir, {})
|
|
-- stylua: ignore
|
|
write_file(testdir .. '/spell/en.ascii.spl',
|
|
-- ┌ Section identifier (#SN_SAL)
|
|
-- │ ┌ Section flags (#SNF_REQUIRED or zero)
|
|
-- │ │ ┌ Section length (4 bytes, MSB first)
|
|
spellheader .. '\005\001\000\000\000\008'
|
|
-- ┌ salflags
|
|
-- │ ┌ salcount (2 bytes, MSB first)
|
|
-- │ │ ┌ salfromlen (1 byte)
|
|
-- │ │ │ ┌ Special character
|
|
-- │ │ │ │┌ salfrom (should not contain NUL)
|
|
-- │ │ │ ││ ┌ saltolen
|
|
-- │ │ │ ││ │ ┌ salto
|
|
-- │ │ │ ││ │ │┌ End of sections marker
|
|
.. '\000\000\001\0024\000\0017\255'
|
|
-- ┌ LWORDTREE tree length (4 bytes)
|
|
-- │ ┌ KWORDTREE tree length (4 bytes)
|
|
-- │ │ ┌ PREFIXTREE tree length
|
|
.. '\000\000\000\000\000\000\000\000\000\000\000\000')
|
|
meths.set_option_value('spelllang', 'en', {})
|
|
eq('Vim(set):E759: Format error in spell file', exc_exec('set spell'))
|
|
end)
|
|
it('errors out when spell header contains NUL bytes', function()
|
|
meths.set_option_value('runtimepath', testdir, {})
|
|
write_file(testdir .. '/spell/en.ascii.spl', spellheader:sub(1, -3) .. '\000\000')
|
|
meths.set_option_value('spelllang', 'en', {})
|
|
eq('Vim(set):E757: This does not look like a spell file', exc_exec('set spell'))
|
|
end)
|
|
end)
|