changeset 18902:b24648ebcbc9 v8.2.0012

patch 8.2.0012: some undo functionality is not tested Commit: https://github.com/vim/vim/commit/559b9c68fe550f3af63d42e0838622aab1ceb1b3 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 15 18:09:19 2019 +0100 patch 8.2.0012: some undo functionality is not tested Problem: Some undo functionality is not tested. Solution: Add a few more test cases. (Dominique Pelle, closes https://github.com/vim/vim/issues/5364)
author Bram Moolenaar <Bram@vim.org>
date Sun, 15 Dec 2019 18:15:03 +0100
parents 27c0cda71bf9
children 1974a221b494
files src/testdir/test_undo.vim src/version.c
diffstat 2 files changed, 57 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_undo.vim
+++ b/src/testdir/test_undo.vim
@@ -249,6 +249,26 @@ func Test_undojoin_redo()
   bwipe!
 endfunc
 
+" undojoin not allowed after undo
+func Test_undojoin_after_undo()
+  new
+  call feedkeys("ixx\<Esc>u", 'xt')
+  call assert_fails(':undojoin', 'E790:')
+  bwipe!
+endfunc
+
+" undojoin is a noop when no change yet, or when 'undolevels' is negative
+func Test_undojoin_noop()
+  new
+  call feedkeys(":undojoin\<CR>", 'xt')
+  call assert_equal([''], getline(1, '$'))
+  setlocal undolevels=-1
+  call feedkeys("ixx\<Esc>u", 'xt')
+  call feedkeys(":undojoin\<CR>", 'xt')
+  call assert_equal(['xx'], getline(1, '$'))
+  bwipe!
+endfunc
+
 func Test_undo_write()
   call delete('Xtest')
   split Xtest
@@ -335,7 +355,14 @@ func Test_undofile_earlier()
   call delete('Xundofile')
 endfunc
 
-" Check that reading a truncted undo file doesn't hang.
+func Test_wundo_errors()
+  new
+  call setline(1, 'hello')
+  call assert_fails('wundo! Xdoesnotexist/Xundofile', 'E828:')
+  bwipe!
+endfunc
+
+" Check that reading a truncated undo file doesn't hang.
 func Test_undofile_truncated()
   new
   call setline(1, 'hello')
@@ -353,6 +380,15 @@ func Test_undofile_truncated()
   call delete('Xundofile')
 endfunc
 
+func Test_rundo_errors()
+  call assert_fails('rundo XfileDoesNotExist', 'E822:')
+
+  call writefile(['abc'], 'Xundofile')
+  call assert_fails('rundo Xundofile', 'E823:')
+
+  call delete('Xundofile')
+endfunc
+
 " Test for undo working properly when executing commands from a register.
 " Also test this in an empty buffer.
 func Test_cmd_in_reg_undo()
@@ -422,6 +458,24 @@ func Test_undo_0()
   bwipe!
 endfunc
 
+" undo or redo are noop if there is nothing to undo or redo
+func Test_undo_redo_noop()
+  new
+  call assert_fails('undo 2', 'E830:')
+
+  message clear
+  undo
+  let messages = split(execute('message'), "\n")
+  call assert_equal('Already at oldest change', messages[-1])
+
+  message clear
+  redo
+  let messages = split(execute('message'), "\n")
+  call assert_equal('Already at newest change', messages[-1])
+
+  bwipe!
+endfunc
+
 func Test_redo_empty_line()
   new
   exe "norm\x16r\x160"
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    12,
+/**/
     11,
 /**/
     10,