Mercurial > vim
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