summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-15 18:09:19 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-15 18:09:19 +0100
commit559b9c68fe550f3af63d42e0838622aab1ceb1b3 (patch)
tree12927de3a826edf31d5c2d2e7303755f333b8ca0
parent5e5a98d7de41457fabad4eb5af3d54cc93f05d0a (diff)
downloadvim-git-559b9c68fe550f3af63d42e0838622aab1ceb1b3.tar.gz
patch 8.2.0012: some undo functionality is not testedv8.2.0012
Problem: Some undo functionality is not tested. Solution: Add a few more test cases. (Dominique Pelle, closes #5364)
-rw-r--r--src/testdir/test_undo.vim56
-rw-r--r--src/version.c2
2 files changed, 57 insertions, 1 deletions
diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim
index a76073e17..e858d7274 100644
--- 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"
diff --git a/src/version.c b/src/version.c
index c4c583ab6..27a42e05e 100644
--- 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,