Permalink
Browse files

patch 8.0.0599: diff mode is insufficiently tested

Problem:    diff mode is insufficiently tested
Solution:   Add more test cases. (Dominique Pelle, closes #1685)
  • Loading branch information...
brammool committed May 16, 2017
1 parent 9e0f6ec commit 79a213d6a4e909703524a7f1ad985c7bd40650a6
Showing with 190 additions and 4 deletions.
  1. +2 −1 src/diff.c
  2. +186 −3 src/testdir/test_diffmode.vim
  3. +2 −0 src/version.c
View
@@ -1244,7 +1244,8 @@ ex_diffoff(exarg_T *eap)
wp->w_p_wrap = wp->w_p_wrap_save;
#ifdef FEAT_FOLDING
free_string_option(wp->w_p_fdm);
wp->w_p_fdm = vim_strsave(wp->w_p_fdm_save);
wp->w_p_fdm = vim_strsave(
*wp->w_p_fdm_save ? wp->w_p_fdm_save : (char_u*)"manual");
if (wp->w_p_fdc == diff_foldcolumn)
wp->w_p_fdc = wp->w_p_fdc_save;
@@ -199,14 +199,69 @@ func Test_diffget_diffput()
call assert_fails('diffget', 'E101:')
windo diffoff
bwipe!
bwipe!
enew!
%bwipe!
endfunc
func Test_dp_do_buffer()
e! one
let bn1=bufnr('%')
let l = range(60)
call setline(1, l)
diffthis
new two
let l[10] = 'one'
let l[20] = 'two'
let l[30] = 'three'
let l[40] = 'four'
let l[50] = 'five'
call setline(1, l)
diffthis
" dp and do with invalid buffer number.
11
call assert_fails('norm 99999dp', 'E102:')
call assert_fails('norm 99999do', 'E102:')
call assert_fails('diffput non_existing_buffer', 'E94:')
call assert_fails('diffget non_existing_buffer', 'E94:')
" dp and do with valid buffer number.
call assert_equal('one', getline('.'))
exe 'norm ' . bn1 . 'do'
call assert_equal('10', getline('.'))
21
call assert_equal('two', getline('.'))
diffget one
call assert_equal('20', getline('.'))
31
exe 'norm ' . bn1 . 'dp'
41
diffput one
wincmd w
31
call assert_equal('three', getline('.'))
41
call assert_equal('four', getline('.'))
" dp and do with buffer number which is not in diff mode.
new not_in_diff_mode
let bn3=bufnr('%')
wincmd w
51
call assert_fails('exe "norm" . bn3 . "dp"', 'E103:')
call assert_fails('exe "norm" . bn3 . "do"', 'E103:')
call assert_fails('diffput not_in_diff_mode', 'E94:')
call assert_fails('diffget not_in_diff_mode', 'E94:')
windo diffoff
%bwipe!
endfunc
func Test_diffoff()
enew!
call setline(1, ['Two', 'Three'])
redraw
let normattr = screenattr(1, 1)
diffthis
botright vert new
@@ -221,10 +276,107 @@ func Test_diffoff()
bwipe!
endfunc
func Test_diffopt_icase()
set diffopt=icase,foldcolumn:0
e one
call setline(1, ['One', 'Two', 'Three', 'Four'])
redraw
let normattr = screenattr(1, 1)
diffthis
botright vert new two
call setline(1, ['one', 'TWO', 'Three ', 'Four'])
diffthis
redraw
call assert_equal(normattr, screenattr(1, 1))
call assert_equal(normattr, screenattr(2, 1))
call assert_notequal(normattr, screenattr(3, 1))
call assert_equal(normattr, screenattr(4, 1))
diffoff!
%bwipe!
set diffopt&
endfunc
func Test_diffopt_iwhite()
set diffopt=iwhite,foldcolumn:0
e one
" Difference in trailing spaces should be ignored,
" but not other space differences.
call setline(1, ["One \t", 'Two', 'Three', 'Four'])
redraw
let normattr = screenattr(1, 1)
diffthis
botright vert new two
call setline(1, ["One\t ", "Two\t ", 'Three', ' Four'])
diffthis
redraw
call assert_equal(normattr, screenattr(1, 1))
call assert_equal(normattr, screenattr(2, 1))
call assert_equal(normattr, screenattr(3, 1))
call assert_notequal(normattr, screenattr(4, 1))
diffoff!
%bwipe!
set diffopt&
endfunc
func Test_diffopt_context()
enew!
call setline(1, ['1', '2', '3', '4', '5', '6', '7'])
diffthis
new
call setline(1, ['1', '2', '3', '4', '5x', '6', '7'])
diffthis
set diffopt=context:2
call assert_equal('+-- 2 lines: 1', foldtextresult(1))
set diffopt=context:1
call assert_equal('+-- 3 lines: 1', foldtextresult(1))
diffoff!
%bwipe!
set diffopt&
endfunc
func Test_diffopt_horizontal()
set diffopt=horizontal
diffsplit
call assert_equal(&columns, winwidth(1))
call assert_equal(&columns, winwidth(2))
call assert_equal(&lines, winheight(1) + winheight(2) + 3)
call assert_inrange(0, 1, winheight(1) - winheight(2))
set diffopt&
diffoff!
%bwipe
endfunc
func Test_diffopt_vertical()
set diffopt=vertical
diffsplit
call assert_equal(&lines - 2, winheight(1))
call assert_equal(&lines - 2, winheight(2))
call assert_equal(&columns, winwidth(1) + winwidth(2) + 1)
call assert_inrange(0, 1, winwidth(1) - winwidth(2))
set diffopt&
diffoff!
%bwipe
endfunc
func Test_diffoff_hidden()
set diffopt=filler,foldcolumn:0
e! one
call setline(1, ['Two', 'Three'])
redraw
let normattr = screenattr(1, 1)
diffthis
botright vert new two
@@ -296,6 +448,37 @@ func Test_diff_move_to()
%bwipe!
endfunc
func Test_diffexpr()
if !executable('diff')
return
endif
func DiffExpr()
silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>' . v:fname_out
endfunc
set diffexpr=DiffExpr()
set diffopt=foldcolumn:0
enew!
call setline(1, ['one', 'two', 'three'])
redraw
let normattr = screenattr(1, 1)
diffthis
botright vert new
call setline(1, ['one', 'two', 'three.'])
diffthis
redraw
call assert_equal(normattr, screenattr(1, 1))
call assert_equal(normattr, screenattr(2, 1))
call assert_notequal(normattr, screenattr(3, 1))
diffoff!
%bwipe!
set diffexpr& diffopt&
endfunc
func Test_diffpatch()
" The patch program on MS-Windows may fail or hang.
if !executable('patch') || !has('unix')
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
599,
/**/
598,
/**/

0 comments on commit 79a213d

Please sign in to comment.