changeset 24661:f51ea1b6d512 v8.2.2869

patch 8.2.2869: using unified diff is not tested Commit: https://github.com/vim/vim/commit/485b62710004431a16feb4eb861365d082304a08 Author: Bram Moolenaar <Bram@vim.org> Date: Tue May 18 19:19:03 2021 +0200 patch 8.2.2869: using unified diff is not tested Problem: Using unified diff is not tested. Solution: Test all cases also with unified diff. (issue https://github.com/vim/vim/issues/8197)
author Bram Moolenaar <Bram@vim.org>
date Tue, 18 May 2021 19:30:03 +0200
parents 36e76c23f8a5
children e7e7b4f11187
files src/testdir/test_diffmode.vim src/version.c
diffstat 2 files changed, 27 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -624,7 +624,7 @@ func Test_diffexpr()
   CheckExecutable diff
 
   func DiffExpr()
-    " Prepent some text to check diff type detection
+    " Prepend some text to check diff type detection
     call writefile(['warning', '  message'], v:fname_out)
     silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>>' . v:fname_out
   endfunc
@@ -789,9 +789,15 @@ func VerifyBoth(buf, dumpfile, extra)
   for cmd in [":set diffopt=filler" . a:extra . "\<CR>:", ":set diffopt+=internal\<CR>:"]
     call term_sendkeys(a:buf, cmd)
     if VerifyScreenDump(a:buf, a:dumpfile, {}, cmd =~ 'internal' ? 'internal' : 'external')
-      break " don't let the next iteration overwrite the "failed" file.
+      " don't let the next iteration overwrite the "failed" file.
+      return
     endif
   endfor
+
+  " also test unified diff
+  call term_sendkeys(a:buf, ":call SetupUnified()\<CR>:")
+  call VerifyScreenDump(a:buf, a:dumpfile, {}, 'unified')
+  call term_sendkeys(a:buf, ":call StopUnified()\<CR>:")
 endfunc
 
 " Verify a screendump with the internal diff only.
@@ -807,13 +813,28 @@ func Test_diff_screen()
   CheckScreendump
   CheckFeature menu
 
+  let lines =<< trim END
+      func UnifiedDiffExpr()
+        " Prepend some text to check diff type detection
+        call writefile(['warning', '  message'], v:fname_out)
+        silent exe '!diff -u ' .. v:fname_in .. ' ' .. v:fname_new .. '>>' .. v:fname_out
+      endfunc
+      func SetupUnified()
+        set diffexpr=UnifiedDiffExpr()
+      endfunc
+      func StopUnified()
+        set diffexpr=
+      endfunc
+  END
+  call writefile(lines, 'XdiffSetup')
+
   " clean up already existing swap files, just in case
   call delete('.Xfile1.swp')
   call delete('.Xfile2.swp')
 
   " Test 1: Add a line in beginning of file 2
   call WriteDiffFiles(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
-  let buf = RunVimInTerminal('-d Xfile1 Xfile2', {})
+  let buf = RunVimInTerminal('-d -S XdiffSetup Xfile1 Xfile2', {})
   " Set autoread mode, so that Vim won't complain once we re-write the test
   " files
   call term_sendkeys(buf, ":set autoread\<CR>\<c-w>w:set autoread\<CR>\<c-w>w")
@@ -933,6 +954,7 @@ func Test_diff_screen()
   call StopVimInTerminal(buf)
   call delete('Xfile1')
   call delete('Xfile2')
+  call delete('XdiffSetup')
 endfunc
 
 func Test_diff_with_cursorline()
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2869,
+/**/
     2868,
 /**/
     2867,