mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 7.4.1494
Problem: clr_history() does not work properly. Solution: Increment hisptr. Add a test. (Yegappan Lakshmanan)
This commit is contained in:
@@ -5783,6 +5783,7 @@ clr_history(int histype)
|
||||
{
|
||||
vim_free(hisptr->hisstr);
|
||||
clear_hist_entry(hisptr);
|
||||
hisptr++;
|
||||
}
|
||||
hisidx[histype] = -1; /* mark history as cleared */
|
||||
hisnum[histype] = 0; /* reset identifier counter */
|
||||
|
@@ -175,6 +175,7 @@ NEW_TESTS = test_arglist.res \
|
||||
test_cdo.res \
|
||||
test_channel.res \
|
||||
test_hardcopy.res \
|
||||
test_history.res \
|
||||
test_increment.res \
|
||||
test_json.res \
|
||||
test_langmap.res \
|
||||
|
65
src/testdir/test_history.vim
Normal file
65
src/testdir/test_history.vim
Normal file
@@ -0,0 +1,65 @@
|
||||
" Tests for the history functions
|
||||
|
||||
if !has('cmdline_hist')
|
||||
finish
|
||||
endif
|
||||
|
||||
set history=7
|
||||
|
||||
function History_Tests(hist)
|
||||
" First clear the history
|
||||
call histadd(a:hist, 'dummy')
|
||||
call assert_true(histdel(a:hist))
|
||||
call assert_equal(-1, histnr(a:hist))
|
||||
call assert_equal('', histget(a:hist))
|
||||
|
||||
call assert_true(histadd(a:hist, 'ls'))
|
||||
call assert_true(histadd(a:hist, 'buffers'))
|
||||
call assert_equal('buffers', histget(a:hist))
|
||||
call assert_equal('ls', histget(a:hist, -2))
|
||||
call assert_equal('ls', histget(a:hist, 1))
|
||||
call assert_equal('', histget(a:hist, 5))
|
||||
call assert_equal('', histget(a:hist, -5))
|
||||
call assert_equal(2, histnr(a:hist))
|
||||
call assert_true(histdel(a:hist, 2))
|
||||
call assert_false(histdel(a:hist, 7))
|
||||
call assert_equal(1, histnr(a:hist))
|
||||
call assert_equal('ls', histget(a:hist, -1))
|
||||
|
||||
call assert_true(histadd(a:hist, 'buffers'))
|
||||
call assert_true(histadd(a:hist, 'ls'))
|
||||
call assert_equal('ls', histget(a:hist, -1))
|
||||
call assert_equal(4, histnr(a:hist))
|
||||
|
||||
" Test for removing entries matching a pattern
|
||||
for i in range(1, 3)
|
||||
call histadd(a:hist, 'text_' . i)
|
||||
endfor
|
||||
call assert_true(histdel(a:hist, 'text_\d\+'))
|
||||
call assert_equal('ls', histget(a:hist, -1))
|
||||
|
||||
" Test for freeing the entire history list
|
||||
for i in range(1, 7)
|
||||
call histadd(a:hist, 'text_' . i)
|
||||
endfor
|
||||
call histdel(a:hist)
|
||||
for i in range(1, 7)
|
||||
call assert_equal('', histget(a:hist, i))
|
||||
call assert_equal('', histget(a:hist, i - 7 - 1))
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function Test_History()
|
||||
for h in ['cmd', ':', '', 'search', '/', '?', 'expr', '=', 'input', '@', 'debug', '>']
|
||||
call History_Tests(h)
|
||||
endfor
|
||||
|
||||
" Negative tests
|
||||
call assert_false(histdel('abc'))
|
||||
call assert_equal('', histget('abc'))
|
||||
call assert_fails('call histdel([])', 'E730:')
|
||||
call assert_equal('', histget(10))
|
||||
call assert_fails('call histget([])', 'E730:')
|
||||
call assert_equal(-1, histnr('abc'))
|
||||
call assert_fails('call histnr([])', 'E730:')
|
||||
endfunction
|
@@ -743,6 +743,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1494,
|
||||
/**/
|
||||
1493,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user