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.

Raspunde prin e-mail lui