view src/testdir/test78.in @ 8881:ed0b39dd7fd6 v7.4.1727

commit https://github.com/vim/vim/commit/ebf7dfa6f121c82f97d2adca3d45fbaba9ad8f7e Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 14 12:46:51 2016 +0200 patch 7.4.1727 Problem: Cannot detect a crash in tests when caused by garbagecollect(). Solution: Add garbagecollect_for_testing(). Do not free a job if is still useful.
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Apr 2016 13:00:06 +0200
parents 7fe2c092913e
children ae45d497868f
line wrap: on
line source

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.

STARTTEST
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
:preserve
:" get the name of the swap file
:redir => swapname
:swapname
:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '')
:" make a copy of the swap file in Xswap
:set bin
:exe 'sp ' . swapname
:w! Xswap
:echo swapname
:set nobin
:new
:only!
:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
:call delete(swapname)
:new
:call append(0, 'recovery start')
:wincmd w
:let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST