aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ex_cmds/excmd_spec.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-09-13 18:15:09 -0700
committerJustin M. Keyes <justinkz@gmail.com>2019-09-13 19:29:25 -0700
commit3344cffe7bf77c984550c01f9405f4d757150d8a (patch)
treee60810ef33fdd5f3f43f06d5ebc503d0e0594bd3 /test/functional/ex_cmds/excmd_spec.lua
parent0a24a2c314a507108be754a0a2d2ed1a16ec523f (diff)
downloadrneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.tar.gz
rneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.tar.bz2
rneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.zip
getdigits: introduce `strict`, `def` parameters
Problem: During a refactor long ago, we changed the `getdigits_*` familiy of functions to abort on overflow. But this is often wrong, because many of these codepaths are handling user input. Solution: Decide at each call-site whether to use "strict" mode. fix #5555
Diffstat (limited to 'test/functional/ex_cmds/excmd_spec.lua')
-rw-r--r--test/functional/ex_cmds/excmd_spec.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/functional/ex_cmds/excmd_spec.lua b/test/functional/ex_cmds/excmd_spec.lua
new file mode 100644
index 0000000000..aac2a9f469
--- /dev/null
+++ b/test/functional/ex_cmds/excmd_spec.lua
@@ -0,0 +1,32 @@
+local helpers = require("test.functional.helpers")(after_each)
+local command = helpers.command
+local eq = helpers.eq
+local clear = helpers.clear
+local pcall_err = helpers.pcall_err
+local assert_alive = helpers.assert_alive
+
+describe('Ex cmds', function()
+ before_each(function()
+ clear()
+ end)
+
+ it('handle integer overflow from user-input #5555', function()
+ command(':9999999999999999999999999999999999999999')
+ command(':later 9999999999999999999999999999999999999999')
+ command(':echo expand("#<9999999999999999999999999999999999999999")')
+ command(':lockvar 9999999999999999999999999999999999999999')
+ command(':winsize 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999')
+ eq('Vim(tabnext):E474: Invalid argument',
+ pcall_err(command, ':tabnext 9999999999999999999999999999999999999999'))
+ eq('Vim(Next):E939: Positive count required',
+ pcall_err(command, ':N 9999999999999999999999999999999999999999'))
+ eq('Vim(menu):E329: No menu "9999999999999999999999999999999999999999"',
+ pcall_err(command, ':menu 9999999999999999999999999999999999999999'))
+ eq('Vim(bdelete):E939: Positive count required',
+ pcall_err(command, ':bdelete 9999999999999999999999999999999999999999'))
+ eq('Vim(retab):E487: Argument must be positive',
+ pcall_err(command, ':retab 9999999999999999999999999999999999999999'))
+ assert_alive()
+ end)
+end)
+