Skip to content

Commit

Permalink
patch 8.2.0012: some undo functionality is not tested
Browse files Browse the repository at this point in the history
Problem:    Some undo functionality is not tested.
Solution:   Add a few more test cases. (Dominique Pelle, closes #5364)
  • Loading branch information
brammool committed Dec 15, 2019
1 parent 5e5a98d commit 559b9c6
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 1 deletion.
56 changes: 55 additions & 1 deletion src/testdir/test_undo.vim
Expand Up @@ -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
Expand Down Expand Up @@ -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')
Expand All @@ -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()
Expand Down Expand Up @@ -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"
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -742,6 +742,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
12,
/**/
11,
/**/
Expand Down

0 comments on commit 559b9c6

Please sign in to comment.