Mercurial > vim
view src/testdir/test_swap.vim @ 16150:b23048205589 v8.1.1080
patch 8.1.1080: when a screendump test fails, moving the file is a hassle
commit https://github.com/vim/vim/commit/ef7f0e367eeaf6fb31b1caa0e3de1a4b07e86af3
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 30 15:59:51 2019 +0100
patch 8.1.1080: when a screendump test fails, moving the file is a hassle
Problem: When a screendump test fails, moving the file is a hassle.
Solution: Instead of appending ".failed" to the file name, keep the same
file name but put the screendump in the "failed" directory.
Then the file name only needs to be typed once when moving a
screendump.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 30 Mar 2019 16:00:06 +0100 |
parents | f315ab10d579 |
children | 4e9bea9b8025 |
line wrap: on
line source
" Tests for the swap feature func s:swapname() return trim(execute('swapname')) endfunc " Tests for 'directory' option. func Test_swap_directory() if !has("unix") return endif let content = ['start of testfile', \ 'line 2 Abcdefghij', \ 'line 3 Abcdefghij', \ 'end of testfile'] call writefile(content, 'Xtest1') " '.', swap file in the same directory as file set dir=.,~ " Verify that the swap file doesn't exist in the current directory call assert_equal([], glob(".Xtest1*.swp", 1, 1, 1)) edit Xtest1 let swfname = s:swapname() call assert_equal([swfname], glob(swfname, 1, 1, 1)) " './dir', swap file in a directory relative to the file set dir=./Xtest2,.,~ call mkdir("Xtest2") edit Xtest1 call assert_equal([], glob(swfname, 1, 1, 1)) let swfname = "Xtest2/Xtest1.swp" call assert_equal(swfname, s:swapname()) call assert_equal([swfname], glob("Xtest2/*", 1, 1, 1)) " 'dir', swap file in directory relative to the current dir set dir=Xtest.je,~ call mkdir("Xtest.je") call writefile(content, 'Xtest2/Xtest3') edit Xtest2/Xtest3 call assert_equal(["Xtest2/Xtest3"], glob("Xtest2/*", 1, 1, 1)) let swfname = "Xtest.je/Xtest3.swp" call assert_equal(swfname, s:swapname()) call assert_equal([swfname], glob("Xtest.je/*", 1, 1, 1)) set dir& call delete("Xtest1") call delete("Xtest2", "rf") call delete("Xtest.je", "rf") endfunc func Test_swap_group() if !has("unix") return endif let groups = split(system('groups')) if len(groups) <= 1 throw 'Skipped: need at least two groups, got ' . string(groups) endif try call delete('Xtest') split Xtest call setline(1, 'just some text') wq if system('ls -l Xtest') !~ ' ' . groups[0] . ' \d' throw 'Skipped: test file does not have the first group' else silent !chmod 640 Xtest call system('chgrp ' . groups[1] . ' Xtest') if system('ls -l Xtest') !~ ' ' . groups[1] . ' \d' throw 'Skipped: cannot set second group on test file' else split Xtest let swapname = s:swapname() call assert_match('Xtest', swapname) " Group of swapfile must now match original file. call assert_match(' ' . groups[1] . ' \d', system('ls -l ' . swapname)) bwipe! endif endif finally call delete('Xtest') endtry endfunc func Test_missing_dir() call mkdir('Xswapdir') exe 'set directory=' . getcwd() . '/Xswapdir' call assert_equal('', glob('foo')) call assert_equal('', glob('bar')) edit foo/x.txt " This should not give a warning for an existing swap file. split bar/x.txt only " Delete the buffer so that swap file is removed before we try to delete the " directory. That fails on MS-Windows. %bdelete! set directory& call delete('Xswapdir', 'rf') endfunc func Test_swapinfo() new Xswapinfo call setline(1, ['one', 'two', 'three']) w let fname = s:swapname() call assert_match('Xswapinfo', fname) let info = swapinfo(fname) let ver = printf('VIM %d.%d', v:version / 100, v:version % 100) call assert_equal(ver, info.version) call assert_match('\w', info.user) " host name is truncated to 39 bytes in the swap file call assert_equal(hostname()[:38], info.host) call assert_match('Xswapinfo', info.fname) call assert_match(0, info.dirty) call assert_equal(getpid(), info.pid) call assert_match('^\d*$', info.mtime) if has_key(info, 'inode') call assert_match('\d', info.inode) endif bwipe! call delete(fname) call delete('Xswapinfo') let info = swapinfo('doesnotexist') call assert_equal('Cannot open file', info.error) call writefile(['burp'], 'Xnotaswapfile') let info = swapinfo('Xnotaswapfile') call assert_equal('Cannot read file', info.error) call delete('Xnotaswapfile') call writefile([repeat('x', 10000)], 'Xnotaswapfile') let info = swapinfo('Xnotaswapfile') call assert_equal('Not a swap file', info.error) call delete('Xnotaswapfile') endfunc func Test_swapname() edit Xtest1 let expected = s:swapname() call assert_equal(expected, swapname('%')) new Xtest2 let buf = bufnr('%') let expected = s:swapname() wincmd p call assert_equal(expected, swapname(buf)) new Xtest3 setlocal noswapfile call assert_equal('', swapname('%')) bwipe! call delete('Xtest1') call delete('Xtest2') call delete('Xtest3') endfunc