diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-09-13 18:15:09 -0700 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-09-13 19:29:25 -0700 |
commit | 3344cffe7bf77c984550c01f9405f4d757150d8a (patch) | |
tree | e60810ef33fdd5f3f43f06d5ebc503d0e0594bd3 /test/functional/ex_cmds/excmd_spec.lua | |
parent | 0a24a2c314a507108be754a0a2d2ed1a16ec523f (diff) | |
download | rneovim-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.lua | 32 |
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) + |