mirror of
https://github.com/neovim/neovim.git
synced 2025-01-01 17:23:36 -07:00
vim-patch:8.2.0958: not sufficient testing for buffer writing
Problem: Not sufficient testing for buffer writing.
Solution: Add a few tests. (Yegappan Lakshmanan, closes vim/vim#6238)
1de5f7c81d
This commit is contained in:
parent
40ca9b9528
commit
b002499c19
@ -1,5 +1,7 @@
|
|||||||
" Tests for the backup function
|
" Tests for the backup function
|
||||||
|
|
||||||
|
source check.vim
|
||||||
|
|
||||||
func Test_backup()
|
func Test_backup()
|
||||||
set backup backupdir=. backupskip=
|
set backup backupdir=. backupskip=
|
||||||
new
|
new
|
||||||
@ -56,3 +58,19 @@ func Test_backup2_backupcopy()
|
|||||||
call delete(f)
|
call delete(f)
|
||||||
set backup&vim backupdir&vim backupcopy&vim backupskip&vim
|
set backup&vim backupdir&vim backupcopy&vim backupskip&vim
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for using a non-existing directory as a backup directory
|
||||||
|
func Test_non_existing_backupdir()
|
||||||
|
throw 'Skipped: Nvim auto-creates backup directory'
|
||||||
|
CheckNotBSD
|
||||||
|
let save_backup = &backupdir
|
||||||
|
set backupdir=./non_existing_dir
|
||||||
|
call writefile(['line1'], 'Xfile')
|
||||||
|
new Xfile
|
||||||
|
" TODO: write doesn't fail in Cirrus FreeBSD CI test
|
||||||
|
call assert_fails('write', 'E510:')
|
||||||
|
let &backupdir = save_backup
|
||||||
|
call delete('Xfile')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -398,9 +398,57 @@ func Test_write_readonly()
|
|||||||
set cpo+=W
|
set cpo+=W
|
||||||
call assert_fails('write!', 'E504:')
|
call assert_fails('write!', 'E504:')
|
||||||
let &cpo = save_cpo
|
let &cpo = save_cpo
|
||||||
|
call setline(1, ['line1'])
|
||||||
|
write!
|
||||||
|
call assert_equal(['line1'], readfile('Xfile'))
|
||||||
call delete('Xfile')
|
call delete('Xfile')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for 'patchmode'
|
||||||
|
func Test_patchmode()
|
||||||
|
CheckNotBSD
|
||||||
|
call writefile(['one'], 'Xfile')
|
||||||
|
set patchmode=.orig nobackup writebackup
|
||||||
|
new Xfile
|
||||||
|
call setline(1, 'two')
|
||||||
|
" first write should create the .orig file
|
||||||
|
write
|
||||||
|
" TODO: Xfile.orig is not created in Cirrus FreeBSD CI test
|
||||||
|
call assert_equal(['one'], readfile('Xfile.orig'))
|
||||||
|
call setline(1, 'three')
|
||||||
|
" subsequent writes should not create/modify the .orig file
|
||||||
|
write
|
||||||
|
call assert_equal(['one'], readfile('Xfile.orig'))
|
||||||
|
set patchmode& backup& writebackup&
|
||||||
|
call delete('Xfile')
|
||||||
|
call delete('Xfile.orig')
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test for writing to a file in a readonly directory
|
||||||
|
func Test_write_readonly_dir()
|
||||||
|
if !has('unix') || has('bsd')
|
||||||
|
" On MS-Windows, modifying files in a read-only directory is allowed.
|
||||||
|
" In Cirrus-CI for Freebsd, tests are run under a root account where
|
||||||
|
" modifying files in a read-only directory are allowed.
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call mkdir('Xdir')
|
||||||
|
call writefile(['one'], 'Xdir/Xfile1')
|
||||||
|
call setfperm('Xdir', 'r-xr--r--')
|
||||||
|
" try to create a new file in the directory
|
||||||
|
new Xdir/Xfile2
|
||||||
|
call setline(1, 'two')
|
||||||
|
call assert_fails('write', 'E212:')
|
||||||
|
" try to create a backup file in the directory
|
||||||
|
edit! Xdir/Xfile1
|
||||||
|
set backupdir=./Xdir
|
||||||
|
set patchmode=.orig
|
||||||
|
call assert_fails('write', 'E509:')
|
||||||
|
call setfperm('Xdir', 'rwxr--r--')
|
||||||
|
call delete('Xdir', 'rf')
|
||||||
|
set backupdir& patchmode&
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Test for writing a file using invalid file encoding
|
" Test for writing a file using invalid file encoding
|
||||||
func Test_write_invalid_encoding()
|
func Test_write_invalid_encoding()
|
||||||
new
|
new
|
||||||
|
Loading…
Reference in New Issue
Block a user