encoding: test that &encoding cannot be changed

Helped-By: Justin M. Keyes <justinkz@gmail.com>
This commit is contained in:
Björn Linse 2015-08-29 17:10:06 +02:00
parent ffff2c9c47
commit 087f3bacaf
2 changed files with 47 additions and 2 deletions

View File

@ -0,0 +1,40 @@
local helpers = require('test.functional.helpers')
local clear, execute, feed = helpers.clear, helpers.execute, helpers.feed
local eq, neq, eval = helpers.eq, helpers.neq, helpers.eval
describe('&encoding', function()
before_each(function()
clear()
-- sanity check: tests should run with encoding=utf-8
eq('utf-8', eval('&encoding'))
eq(3, eval('strwidth("Bär")'))
end)
it('cannot be changed after setup', function()
execute('set encoding=latin1')
-- error message expected
feed('<cr>')
neq(nil, string.find(eval('v:errmsg'), '^E905:'))
eq('utf-8', eval('&encoding'))
-- check nvim is still in utf-8 mode
eq(3, eval('strwidth("Bär")'))
end)
it('is not changed by `set all&`', function()
-- we need to set &encoding to something non-default
-- use 'latin1' when enc&vi is 'utf-8', 'utf-8' otherwise
execute('set fenc=default')
local enc_default, enc_other, width = eval('&fenc'), 'utf-8', 3
if enc_default == 'utf-8' then
enc_other = 'latin1'
width = 4 -- utf-8 string 'Bär' will count as 4 latin1 chars
end
clear('set enc=' .. enc_other)
execute('set all&')
eq(enc_other, eval('&encoding'))
eq(width, eval('strwidth("Bär")'))
end)
end)

View File

@ -183,11 +183,16 @@ local function spawn(argv)
return session
end
local function clear()
local function clear(extra_cmd)
if session then
session:exit(0)
end
session = spawn(nvim_argv)
local args = {unpack(nvim_argv)}
if extra_cmd ~= nil then
table.insert(args, '--cmd')
table.insert(args, extra_cmd)
end
session = spawn(args)
end
local function insert(...)