0
0
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:
Bram Moolenaar
2016-03-05 21:21:24 +01:00
parent 5983ad0b03
commit 119d4693e0
4 changed files with 69 additions and 0 deletions

View File

@@ -5783,6 +5783,7 @@ clr_history(int histype)
{ {
vim_free(hisptr->hisstr); vim_free(hisptr->hisstr);
clear_hist_entry(hisptr); clear_hist_entry(hisptr);
hisptr++;
} }
hisidx[histype] = -1; /* mark history as cleared */ hisidx[histype] = -1; /* mark history as cleared */
hisnum[histype] = 0; /* reset identifier counter */ hisnum[histype] = 0; /* reset identifier counter */

View File

@@ -175,6 +175,7 @@ NEW_TESTS = test_arglist.res \
test_cdo.res \ test_cdo.res \
test_channel.res \ test_channel.res \
test_hardcopy.res \ test_hardcopy.res \
test_history.res \
test_increment.res \ test_increment.res \
test_json.res \ test_json.res \
test_langmap.res \ test_langmap.res \

View 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

View File

@@ -743,6 +743,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1494,
/**/ /**/
1493, 1493,
/**/ /**/