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:
zeertzjq 2022-11-05 08:22:46 +08:00
parent 40ca9b9528
commit b002499c19
2 changed files with 66 additions and 0 deletions

View File

@ -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

View File

@ -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