diff src/testdir/test_recover.vim @ 12616:4767939d10cc v8.0.1186

patch 8.0.1186: still quite a few old style tests commit https://github.com/vim/vim/commit/4a6fcf8047de13c7949ab2f27f7774acaec4ae4d Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 12 21:29:22 2017 +0200 patch 8.0.1186: still quite a few old style tests Problem: Still quite a few old style tests. Solution: Convert old to new style tests. (Yegappan Lakshmanan) Avoid ringing the bell while running tests.
author Christian Brabandt <cb@256bit.org>
date Thu, 12 Oct 2017 21:30:07 +0200
parents 0cafb01af1b6
children 1fad9675d8fd
line wrap: on
line diff
--- a/src/testdir/test_recover.vim
+++ b/src/testdir/test_recover.vim
@@ -15,4 +15,48 @@ func Test_recover_root_dir()
   set dir&
 endfunc
 
-" TODO: move recover tests from test78.in to here.
+" Inserts 10000 lines with text to fill the swap file with two levels of pointer
+" blocks.  Then recovers from the swap file and checks all text is restored.
+"
+" We need about 10000 lines of 100 characters to get two levels of pointer
+" blocks.
+func Test_swap_file()
+  set fileformat=unix undolevels=-1 belloff=all
+  edit! Xtest
+  let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
+  let i = 1
+  let linecount = 10000
+  while i <= linecount
+    call append(i - 1, i . text)
+    let i += 1
+  endwhile
+  $delete
+  preserve
+  " get the name of the swap file
+  let swname = split(execute("swapname"))[0]
+  let swname = substitute(swname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '')
+  " make a copy of the swap file in Xswap
+  set binary
+  exe 'sp ' . swname
+  w! Xswap
+  set nobinary
+  new
+  only!
+  bwipe! Xtest
+  call rename('Xswap', swname)
+  recover Xtest
+  call delete(swname)
+  let linedollar = line('$')
+  call assert_equal(linecount, linedollar)
+  if linedollar < linecount
+    let linecount = linedollar
+  endif
+  let i = 1
+  while i <= linecount
+    call assert_equal(i . text, getline(i))
+    let i += 1
+  endwhile
+
+  set undolevels&
+  enew! | only
+endfunc