# HG changeset patch # User Bram Moolenaar # Date 1576430103 -3600 # Node ID b24648ebcbc981e4787b259d1573feea48c56d36 # Parent 27c0cda71bf9b469543f167a3521447f49d8cae0 patch 8.2.0012: some undo functionality is not tested Commit: https://github.com/vim/vim/commit/559b9c68fe550f3af63d42e0838622aab1ceb1b3 Author: Bram Moolenaar 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) diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim --- 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\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\", 'xt') + call assert_equal([''], getline(1, '$')) + setlocal undolevels=-1 + call feedkeys("ixx\u", 'xt') + call feedkeys(":undojoin\", '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 --- 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,