vim-patch:9.0.0379: cleaning up after writefile() is a hassle

Problem:    Cleaning up after writefile() is a hassle.
Solution:   Add the 'D' flag to defer deleting the written file.  Very useful
            in tests.

806a273f3c

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-04-16 11:07:48 +08:00
parent b75634e55e
commit 0167649ce4
5 changed files with 91 additions and 61 deletions

View File

@@ -6250,28 +6250,6 @@ func Test_very_long_error_line()
call setqflist([], 'f')
endfunc
" The test depends on deferred delete and string interpolation, which haven't
" been ported, so override it with a rewrite that doesn't use these features.
func! Test_very_long_error_line()
let msg = repeat('abcdefghijklmn', 146)
let emsg = 'Xlonglines.c:1:' . msg
call writefile([msg, emsg], 'Xerror')
cfile Xerror
call delete('Xerror')
cwindow
call assert_equal('|| ' .. msg, getline(1))
call assert_equal('Xlonglines.c|1| ' .. msg, getline(2))
cclose
let l = execute('clist!')->split("\n")
call assert_equal([' 1: ' .. msg, ' 2 Xlonglines.c:1: ' .. msg], l)
let l = execute('cc')->split("\n")
call assert_equal(['(2 of 2): ' .. msg], l)
call setqflist([], 'f')
endfunc
" In the quickfix window, spaces at the beginning of an informational line
" should not be removed but should be removed from an error line.
func Test_info_line_with_space()

View File

@@ -924,19 +924,36 @@ endfunc
" Test for ':write ++bin' and ':write ++nobin'
func Test_write_binary_file()
" create a file without an eol/eof character
call writefile(0z616161, 'Xfile1', 'b')
new Xfile1
write ++bin Xfile2
write ++nobin Xfile3
call assert_equal(0z616161, readblob('Xfile2'))
call writefile(0z616161, 'Xwbfile1', 'b')
new Xwbfile1
write ++bin Xwbfile2
write ++nobin Xwbfile3
call assert_equal(0z616161, readblob('Xwbfile2'))
if has('win32')
call assert_equal(0z6161610D.0A, readblob('Xfile3'))
call assert_equal(0z6161610D.0A, readblob('Xwbfile3'))
else
call assert_equal(0z6161610A, readblob('Xfile3'))
call assert_equal(0z6161610A, readblob('Xwbfile3'))
endif
call delete('Xfile1')
call delete('Xfile2')
call delete('Xfile3')
call delete('Xwbfile1')
call delete('Xwbfile2')
call delete('Xwbfile3')
endfunc
func DoWriteDefer()
call writefile(['some text'], 'XdeferDelete', 'D')
call assert_equal(['some text'], readfile('XdeferDelete'))
endfunc
" def DefWriteDefer()
" writefile(['some text'], 'XdefdeferDelete', 'D')
" assert_equal(['some text'], readfile('XdefdeferDelete'))
" enddef
func Test_write_with_deferred_delete()
call DoWriteDefer()
call assert_equal('', glob('XdeferDelete'))
" call DefWriteDefer()
" call assert_equal('', glob('XdefdeferDelete'))
endfunc
" Check that buffer is written before triggering QuitPre