Patch 8.0.0599
Problem: diff mode is insufficiently tested
Solution: Add more test cases. (Dominique Pelle, closes #1685)
Files: src/diff.c, src/testdir/test_diffmode.vim
*** ../vim-8.0.0598/src/diff.c 2017-03-12 20:09:59.464468404 +0100
--- src/diff.c 2017-05-16 09:48:39.933582520 +0200
***************
*** 1244,1250 ****
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);
if (wp->w_p_fdc == diff_foldcolumn)
wp->w_p_fdc = wp->w_p_fdc_save;
--- 1244,1251 ----
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_save : (char_u*)"manual");
if (wp->w_p_fdc == diff_foldcolumn)
wp->w_p_fdc = wp->w_p_fdc_save;
*** ../vim-8.0.0598/src/testdir/test_diffmode.vim 2017-03-11
19:21:49.230723995 +0100
--- src/testdir/test_diffmode.vim 2017-05-16 09:48:39.933582520 +0200
***************
*** 199,212 ****
call assert_fails('diffget', 'E101:')
windo diffoff
! bwipe!
! bwipe!
! enew!
endfunc
func Test_diffoff()
enew!
call setline(1, ['Two', 'Three'])
let normattr = screenattr(1, 1)
diffthis
botright vert new
--- 199,267 ----
call assert_fails('diffget', 'E101:')
windo diffoff
! %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,230 ****
--- 276,382 ----
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,301 ****
--- 448,484 ----
%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')
*** ../vim-8.0.0598/src/version.c 2017-05-16 09:36:48.281905608 +0200
--- src/version.c 2017-05-16 09:46:48.522259286 +0200
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 599,
/**/
--
A year spent in artificial intelligence is enough to make one
believe in God.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.