aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2015-03-23 23:15:29 -0400
committerJustin M. Keyes <justinkz@gmail.com>2015-04-12 01:02:58 -0400
commit2275297f4a6073df6a94aa6894d635468faeb7ae (patch)
treebb06da6f9ed791a1e95a07253cb1e26531415a64 /test/functional/legacy
parent86ee88163e0da441eea6bff379f848cd71fef788 (diff)
downloadrneovim-2275297f4a6073df6a94aa6894d635468faeb7ae.tar.gz
rneovim-2275297f4a6073df6a94aa6894d635468faeb7ae.tar.bz2
rneovim-2275297f4a6073df6a94aa6894d635468faeb7ae.zip
test: migrate legacy test 78
Diffstat (limited to 'test/functional/legacy')
-rw-r--r--test/functional/legacy/078_swapfile_recover_spec.lua80
1 files changed, 80 insertions, 0 deletions
diff --git a/test/functional/legacy/078_swapfile_recover_spec.lua b/test/functional/legacy/078_swapfile_recover_spec.lua
new file mode 100644
index 0000000000..e250c91441
--- /dev/null
+++ b/test/functional/legacy/078_swapfile_recover_spec.lua
@@ -0,0 +1,80 @@
+-- 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.
+
+local helpers = require('test.functional.helpers')
+local feed, insert, source = helpers.feed, helpers.insert, helpers.source
+local clear, execute, expect, source = helpers.clear, helpers.execute, helpers.expect, helpers.source
+local eval = helpers.eval
+
+describe('78', function()
+ setup(clear)
+ teardown(function()
+ os.remove(".Xtest.swp")
+ os.remove(".Xtest.swo")
+ end)
+
+ it('is working', function()
+ source([=[
+ set swapfile fileformat=unix undolevels=-1
+ e! Xtest
+ 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, and clean up the :redir capture.
+ redir => g:swapname | swapname | redir END
+ let g:swapname = substitute(g:swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', 'g')
+ let g:swapname = fnameescape(g:swapname)
+
+ " Make a copy of the swap file in Xswap
+ set bin
+ exe 'sp ' . g:swapname
+ w! Xswap
+
+ set nobin
+ new
+ only!
+ bwipe! Xtest
+ call rename('Xswap', g:swapname)
+
+ "TODO(jkeyes): without 'silent', this hangs the test " at message:
+ " 'Recovery completed. You should check if everything is OK.'
+ silent recover Xtest
+
+ call delete(g:swapname)
+ new
+ call append(0, 'recovery start')
+ wincmd w
+
+ let g:linedollar = line('$')
+ if g:linedollar < linecount
+ wincmd w
+ call append(line('$'), "expected " . linecount
+ \ . " lines but found only " . g:linedollar)
+ wincmd w
+ let linecount = g: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')
+ ]=])
+
+ expect([[
+ recovery start
+
+ recovery end]])
+ end)
+end)