aboutsummaryrefslogtreecommitdiff
path: root/test/functional/options/num_options_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/options/num_options_spec.lua')
-rw-r--r--test/functional/options/num_options_spec.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/functional/options/num_options_spec.lua b/test/functional/options/num_options_spec.lua
new file mode 100644
index 0000000000..c37bbeffc3
--- /dev/null
+++ b/test/functional/options/num_options_spec.lua
@@ -0,0 +1,42 @@
+-- Tests for :setlocal and :setglobal
+
+local helpers = require('test.functional.helpers')(after_each)
+local clear, execute, eval, eq, nvim =
+ helpers.clear, helpers.execute, helpers.eval, helpers.eq, helpers.nvim
+
+local function get_num_option_global(opt)
+ return nvim('command_output', 'setglobal ' .. opt .. '?'):match('%d+')
+end
+
+local function should_fail(opt, value, errmsg)
+ execute('let v:errmsg = ""')
+ execute('setglobal ' .. opt .. '=' .. value)
+ eq(errmsg, eval("v:errmsg"):match("E%d*:"))
+ execute('let v:errmsg = ""')
+ execute('setlocal ' .. opt .. '=' .. value)
+ eq(errmsg, eval("v:errmsg"):match("E%d*:"))
+ execute('let v:errmsg = ""')
+end
+
+describe(':setlocal', function()
+ before_each(clear)
+
+ it('setlocal sets only local value', function()
+ eq('0', get_num_option_global('iminsert'))
+ execute('setlocal iminsert=1')
+ eq('0', get_num_option_global('iminsert'))
+ eq('0', get_num_option_global('imsearch'))
+ execute('setlocal imsearch=1')
+ eq('0', get_num_option_global('imsearch'))
+ end)
+end)
+
+describe(':set validation', function()
+ before_each(clear)
+
+ it('setlocal and setglobal validate values', function()
+ should_fail('shiftwidth', -10, 'E487')
+ should_fail('tabstop', -10, 'E487')
+ should_fail('winheight', -10, 'E487')
+ end)
+end)