diff --git a/src/testdir/test_scriptnames.vim b/src/testdir/test_scriptnames.vim
index b558af5..3f81349 100644
--- a/src/testdir/test_scriptnames.vim
+++ b/src/testdir/test_scriptnames.vim
@@ -1,7 +1,7 @@
 
 " Test for the :scriptnames command
 func Test_scriptnames()
-  call writefile(['let did_load_script = 123'], 'Xscripting')
+  call writefile(['let did_load_script = 123'], 'Xscripting', 'D')
   source Xscripting
   call assert_equal(123, g:did_load_script)
 
@@ -22,7 +22,6 @@
   call assert_equal('Xscripting', expand('%:t'))
 
   bwipe
-  call delete('Xscripting')
 
   let msgs = execute('messages')
   scriptnames
@@ -47,7 +46,7 @@
     def Xscript_def_func2()
     enddef
   END
-  call writefile(lines, 'X22script91')
+  call writefile(lines, 'X22script91', 'D')
   source X22script91
   let l = getscriptinfo()
   call assert_match('X22script91$', l[-1].name)
@@ -92,8 +91,6 @@
   call assert_fails("echo getscriptinfo('foobar')", 'E1206:')
 
   call assert_fails("echo getscriptinfo({'sid': []})", 'E745:')
-
-  call delete('X22script91')
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index c12c07b..3576673 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -724,7 +724,7 @@
   endif
   " Prepare buffer text
   let lines = ['abb vim vim vi', 'vimvivim']
-  call writefile(lines, 'Xsearch.txt')
+  call writefile(lines, 'Xsearch.txt', 'D')
   let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
 
   call WaitForAssert({-> assert_equal(lines, [term_getline(buf, 1), term_getline(buf, 2)])})
@@ -743,9 +743,8 @@
   call assert_notequal(a1, a2)
   call assert_equal(a0, a2)
   call assert_equal(a1, a3)
-  " clean up
-  call delete('Xsearch.txt')
 
+  " clean up
   bwipe!
 endfunc
 
@@ -859,7 +858,7 @@
 
   " Prepare buffer text
   let lines = ['abb vim vim vi', 'vimvivim']
-  call writefile(lines, 'Xsearch.txt')
+  call writefile(lines, 'Xsearch.txt', 'D')
   let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3})
 
   call WaitForAssert({-> assert_equal(lines, [term_getline(buf, 1), term_getline(buf, 2)])})
@@ -928,9 +927,7 @@
   let attr_line2 = [a0,a0,a0,a0,a0,a0,a0,a0]
   call assert_equal(attr_line1, map(term_scrape(buf, 1)[:len(attr_line1)-1], 'v:val.attr'))
   call assert_equal(attr_line2, map(term_scrape(buf, 2)[:len(attr_line2)-1], 'v:val.attr'))
-  call delete('Xsearch.txt')
 
-  call delete('Xsearch.txt')
   bwipe!
 endfunc
 
@@ -956,7 +953,7 @@
 	\ 'call setline(1, [dots, dots, dots, "", "target", dots, dots])',
 	\ 'normal gg',
 	\ 'redraw',
-	\ ], 'Xscript')
+	\ ], 'Xscript', 'D')
   let buf = RunVimInTerminal('-S Xscript', {'rows': 9, 'cols': 70})
   " Need to send one key at a time to force a redraw
   call term_sendkeys(buf, '/')
@@ -972,7 +969,6 @@
 
   call term_sendkeys(buf, "\<Esc>")
   call StopVimInTerminal(buf)
-  call delete('Xscript')
 endfunc
 
 func Test_incsearch_search_dump()
@@ -985,7 +981,7 @@
 	\ '  call setline(n, "foo " . n)',
 	\ 'endfor',
 	\ '3',
-	\ ], 'Xis_search_script')
+	\ ], 'Xis_search_script', 'D')
   let buf = RunVimInTerminal('-S Xis_search_script', {'rows': 9, 'cols': 70})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1002,7 +998,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_search_script')
 endfunc
 
 func Test_hlsearch_dump()
@@ -1014,7 +1009,7 @@
         \ 'call setline(1, ["xxx", "xxx", "xxx"])',
 	\ '/.*',
 	\ '2',
-	\ ], 'Xhlsearch_script')
+	\ ], 'Xhlsearch_script', 'D')
   let buf = RunVimInTerminal('-S Xhlsearch_script', {'rows': 6, 'cols': 50})
   call VerifyScreenDump(buf, 'Test_hlsearch_1', {})
 
@@ -1022,7 +1017,6 @@
   call VerifyScreenDump(buf, 'Test_hlsearch_2', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xhlsearch_script')
 endfunc
 
 func Test_hlsearch_and_visual()
@@ -1035,14 +1029,13 @@
         \ 'hi Search cterm=bold',
 	\ '/yyy',
 	\ 'call cursor(1, 6)',
-	\ ], 'Xhlvisual_script')
+	\ ], 'Xhlvisual_script', 'D')
   let buf = RunVimInTerminal('-S Xhlvisual_script', {'rows': 6, 'cols': 40})
   call term_sendkeys(buf, "vjj")
   call VerifyScreenDump(buf, 'Test_hlsearch_visual_1', {})
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xhlvisual_script')
 endfunc
 
 func Test_hlsearch_block_visual_match()
@@ -1052,7 +1045,7 @@
     set hlsearch
     call setline(1, ['aa', 'bbbb', 'cccccc'])
   END
-  call writefile(lines, 'Xhlsearch_block')
+  call writefile(lines, 'Xhlsearch_block', 'D')
   let buf = RunVimInTerminal('-S Xhlsearch_block', {'rows': 9, 'cols': 60})
 
   call term_sendkeys(buf, "G\<C-V>$kk\<Esc>")
@@ -1062,7 +1055,6 @@
   call VerifyScreenDump(buf, 'Test_hlsearch_block_visual_match', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xhlsearch_block')
 endfunc
 
 func Test_incsearch_substitute()
@@ -1108,7 +1100,7 @@
     hi Search ctermbg=yellow
     hi CurSearch ctermbg=blue
   END
-  call writefile(lines, 'Xhlsearch_cursearch')
+  call writefile(lines, 'Xhlsearch_cursearch', 'D')
   let buf = RunVimInTerminal('-S Xhlsearch_cursearch', {'rows': 9, 'cols': 60})
 
   call term_sendkeys(buf, "gg/foo\<CR>")
@@ -1146,7 +1138,6 @@
   call VerifyScreenDump(buf, 'Test_hlsearch_cursearch_changed_1', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xhlsearch_cursearch')
 endfunc
 
 " Similar to Test_incsearch_substitute() but with a screendump halfway.
@@ -1161,7 +1152,7 @@
 	\ 'endfor',
 	\ 'call setline(11, "bar 11")',
 	\ '3',
-	\ ], 'Xis_subst_script')
+	\ ], 'Xis_subst_script', 'D')
   let buf = RunVimInTerminal('-S Xis_subst_script', {'rows': 9, 'cols': 70})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1256,7 +1247,6 @@
   call term_sendkeys(buf, "<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_subst_script')
 endfunc
 
 func Test_incsearch_highlighting()
@@ -1266,7 +1256,7 @@
   call writefile([
 	\ 'set incsearch hlsearch',
 	\ 'call setline(1, "hello/there")',
-	\ ], 'Xis_subst_hl_script')
+	\ ], 'Xis_subst_hl_script', 'D')
   let buf = RunVimInTerminal('-S Xis_subst_hl_script', {'rows': 4, 'cols': 20})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1279,7 +1269,6 @@
   call term_sendkeys(buf, "<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_subst_hl_script')
 endfunc
 
 func Test_incsearch_with_change()
@@ -1291,7 +1280,7 @@
 	\ 'set incsearch hlsearch scrolloff=0',
 	\ 'call setline(1, ["one", "two ------ X", "three"])',
 	\ 'call timer_start(200, { _ -> setline(2, "x")})',
-	\ ], 'Xis_change_script')
+	\ ], 'Xis_change_script', 'D')
   let buf = RunVimInTerminal('-S Xis_change_script', {'rows': 9, 'cols': 70})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1303,7 +1292,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_change_script')
 endfunc
 
 " Similar to Test_incsearch_substitute_dump() for :sort
@@ -1314,7 +1302,7 @@
   call writefile([
 	\ 'set incsearch hlsearch scrolloff=0',
 	\ 'call setline(1, ["another one 2", "that one 3", "the one 1"])',
-	\ ], 'Xis_sort_script')
+	\ ], 'Xis_sort_script', 'D')
   let buf = RunVimInTerminal('-S Xis_sort_script', {'rows': 9, 'cols': 70})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1329,7 +1317,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_sort_script')
 endfunc
 
 " Similar to Test_incsearch_substitute_dump() for :vimgrep famiry
@@ -1340,7 +1327,7 @@
   call writefile([
 	\ 'set incsearch hlsearch scrolloff=0',
 	\ 'call setline(1, ["another one 2", "that one 3", "the one 1"])',
-	\ ], 'Xis_vimgrep_script')
+	\ ], 'Xis_vimgrep_script', 'D')
   let buf = RunVimInTerminal('-S Xis_vimgrep_script', {'rows': 9, 'cols': 70})
   " Give Vim a chance to redraw to get rid of the spaces in line 2 caused by
   " the 'ambiwidth' check.
@@ -1368,7 +1355,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('Xis_vimgrep_script')
 endfunc
 
 func Test_keep_last_search_pattern()
@@ -1492,11 +1478,9 @@
 func Test_no_last_substitute_pat()
   " Use viminfo to set the last search pattern to a string and make the last
   " substitute pattern the most recent used and make it empty (NULL).
-  call writefile(['~MSle0/bar', '~MSle0~&'], 'Xviminfo')
+  call writefile(['~MSle0/bar', '~MSle0~&'], 'Xviminfo', 'D')
   rviminfo! Xviminfo
   call assert_fails('normal n', 'E35:')
-
-  call delete('Xviminfo')
 endfunc
 
 func Test_search_Ctrl_L_combining()
@@ -1739,12 +1723,11 @@
     call writefile(v:errors, 'Xresult')
     qall!
   [SCRIPT]
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
 
   if RunVim([], [], '--clean -S Xscript')
     call assert_equal([], readfile('Xresult'))
   endif
-  call delete('Xscript')
   call delete('Xresult')
 endfunc
 
@@ -1762,11 +1745,10 @@
     call writefile(v:errors, 'Xresult')
     qall!
   [SCRIPT]
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], '--clean -S Xscript')
     call assert_equal([], readfile('Xresult'))
   endif
-  call delete('Xscript')
   call delete('Xresult')
 endfunc
 
@@ -2012,7 +1994,7 @@
     set incsearch nohls
     call setline(1, ['test', 'xxx'])
   [CODE]
-  call writefile(commands, 'Xincsearch_nl')
+  call writefile(commands, 'Xincsearch_nl', 'D')
   let buf = RunVimInTerminal('-S Xincsearch_nl', {'rows': 5, 'cols': 10})
   call term_sendkeys(buf, '/test')
   call VerifyScreenDump(buf, 'Test_incsearch_newline1', {})
@@ -2028,7 +2010,6 @@
   call StopVimInTerminal(buf)
 
   " clean up
-  call delete('Xincsearch_nl')
   call test_override("char_avail", 0)
   bw
 endfunc
@@ -2044,7 +2025,7 @@
 	\ 'endfor',
 	\ 'call setline(5, "abc|def")',
 	\ '3',
-	\ ], 'Xis_subst_script2')
+	\ ], 'Xis_subst_script2', 'D')
   let buf = RunVimInTerminal('-S Xis_subst_script2', {'rows': 9, 'cols': 70})
 
   call term_sendkeys(buf, ':%s/\vabc|')
@@ -2059,7 +2040,6 @@
 
 
   call StopVimInTerminal(buf)
-  call delete('Xis_subst_script2')
 endfunc
 
 func Test_pattern_is_uppercase_smartcase()
@@ -2146,11 +2126,10 @@
     5/
     c
   END
-  call writefile(lines, 'Xrangesearch')
+  call writefile(lines, 'Xrangesearch', 'D')
   source Xrangesearch
 
   bwipe!
-  call delete('Xrangesearch')
 endfunc
 
 
diff --git a/src/testdir/test_search_stat.vim b/src/testdir/test_search_stat.vim
index 71e050c..b8509ba 100644
--- a/src/testdir/test_search_stat.vim
+++ b/src/testdir/test_search_stat.vim
@@ -287,7 +287,7 @@
     set hlsearch
     set laststatus=2 statusline+=%{TestSearchCount()}
   END
-  call writefile(lines, 'Xsearchstatusline')
+  call writefile(lines, 'Xsearchstatusline', 'D')
   let buf = RunVimInTerminal('-S Xsearchstatusline', #{rows: 10})
   call TermWait(buf)
   call term_sendkeys(buf, "/something")
@@ -295,7 +295,6 @@
 
   call term_sendkeys(buf, "\<Esc>")
   call StopVimInTerminal(buf)
-  call delete('Xsearchstatusline')
 endfunc
 
 func Test_search_stat_foldopen()
@@ -309,7 +308,7 @@
     call cursor(1,1)
     norm n
   END
-  call writefile(lines, 'Xsearchstat1')
+  call writefile(lines, 'Xsearchstat1', 'D')
 
   let buf = RunVimInTerminal('-S Xsearchstat1', #{rows: 10})
   call VerifyScreenDump(buf, 'Test_searchstat_3', {})
@@ -321,7 +320,6 @@
   call VerifyScreenDump(buf, 'Test_searchstat_3', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xsearchstat1')
 endfunc
 
 func! Test_search_stat_screendump()
@@ -338,7 +336,7 @@
     call cursor(1,1)
     norm n
   END
-  call writefile(lines, 'Xsearchstat')
+  call writefile(lines, 'Xsearchstat', 'D')
   let buf = RunVimInTerminal('-S Xsearchstat', #{rows: 10})
   call VerifyScreenDump(buf, 'Test_searchstat_1', {})
 
@@ -347,7 +345,6 @@
   call VerifyScreenDump(buf, 'Test_searchstat_2', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xsearchstat')
 endfunc
 
 func Test_search_stat_then_gd()
@@ -358,7 +355,7 @@
     set shortmess-=S
     set hlsearch
   END
-  call writefile(lines, 'Xsearchstatgd')
+  call writefile(lines, 'Xsearchstatgd', 'D')
 
   let buf = RunVimInTerminal('-S Xsearchstatgd', #{rows: 10})
   call term_sendkeys(buf, "/dog\<CR>")
@@ -368,7 +365,6 @@
   call VerifyScreenDump(buf, 'Test_searchstatgd_2', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xsearchstatgd')
 endfunc
 
 func Test_search_stat_and_incsearch()
@@ -392,7 +388,7 @@
 
     set tabline=%!MyTabLine()
   END
-  call writefile(lines, 'Xsearchstat_inc')
+  call writefile(lines, 'Xsearchstat_inc', 'D')
 
   let buf = RunVimInTerminal('-S Xsearchstat_inc', #{rows: 10})
   call term_sendkeys(buf, "/abc")
@@ -411,7 +407,6 @@
   call TermWait(buf)
 
   call StopVimInTerminal(buf)
-  call delete('Xsearchstat_inc')
 endfunc
 
 
diff --git a/src/testdir/test_shell.vim b/src/testdir/test_shell.vim
index a194f3b..cacb02b 100644
--- a/src/testdir/test_shell.vim
+++ b/src/testdir/test_shell.vim
@@ -202,7 +202,7 @@
   let save_sxq = &shellxquote
   let save_sxe = &shellxescape
 
-  call writefile(['#!/bin/sh', 'echo "Cmd: [$*]" > Xlog'], 'Xtestshell')
+  call writefile(['#!/bin/sh', 'echo "Cmd: [$*]" > Xlog'], 'Xtestshell', 'D')
   call setfperm('Xtestshell', "r-x------")
   set shell=./Xtestshell
 
@@ -226,7 +226,6 @@
   let &shell = save_shell
   let &shellxquote = save_sxq
   let &shellxescape = save_sxe
-  call delete('Xtestshell')
   call delete('Xlog')
 endfunc
 
diff --git a/src/testdir/test_shortpathname.vim b/src/testdir/test_shortpathname.vim
index 79b7899..5964630 100644
--- a/src/testdir/test_shortpathname.vim
+++ b/src/testdir/test_shortpathname.vim
@@ -42,7 +42,7 @@
   let file2 = dir2 . '/z.txt'
   let nofile2 = dir2 . '/zz.txt'
 
-  call mkdir(dir1)
+  call mkdir(dir1, 'D')
   let resdir1 = substitute(fnamemodify(dir1, ':p:8'), '/$', '', '')
   call assert_match('\V\^c:/XX\x\x\x\x~1.Y\$', resdir1)
 
@@ -52,9 +52,9 @@
   let resfile2 = resdir2 . '/z.txt'
   let resnofile2 = resdir2 . '/zz.txt'
 
-  call mkdir(dir2)
-  call writefile([], file1)
-  call writefile([], file2)
+  call mkdir(dir2, 'D')
+  call writefile([], file1, 'D')
+  call writefile([], file2, 'D')
 
   call TestIt(file1, ':p:8', resfile1)
   call TestIt(nofile1, ':p:8', resnofile1)
@@ -73,10 +73,6 @@
   call TestIt(nofile2, ':~:8', '~' . strpart(resnofile2, strlen(resdir1)))
 
   cd c:/
-  call delete(file2)
-  call delete(file1)
-  call delete(dir2, 'd')
-  call delete(dir1, 'd')
 
   call chdir(save_dir)
 endfunc
@@ -86,16 +82,13 @@
 
   let file = dir . '/日本語のファイル.txt'
 
-  call mkdir(dir)
-  call writefile([], file)
+  call mkdir(dir, 'D')
+  call writefile([], file, 'D')
 
   let sfile = fnamemodify(file, ':8')
 
   call assert_notequal(file, sfile)
   call assert_match('\~', sfile)
-
-  call delete(file)
-  call delete(dir, 'd')
 endfunc
 
 func Test_ColonEight_notexists()
diff --git a/src/testdir/test_signals.vim b/src/testdir/test_signals.vim
index ea25ae1..c37ea2a 100644
--- a/src/testdir/test_signals.vim
+++ b/src/testdir/test_signals.vim
@@ -117,7 +117,7 @@
     au VimSuspend * call writefile(["VimSuspend triggered"], "XautoOut1", "as")
     au VimResume * call writefile(["VimResume triggered"], "XautoOut2", "as")
   END
-  call writefile(lines, 'XsetupAucmd')
+  call writefile(lines, 'XsetupAucmd', 'D')
 
   let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
   let pid_vim = term_getjob(buf)->job_info().process
@@ -147,7 +147,6 @@
 
   %bwipe!
   call delete('.Xsig_TERM.swp')
-  call delete('XsetupAucmd')
   call delete('XautoOut1')
   call delete('XautoOut2')
 endfunc
@@ -176,7 +175,7 @@
     au VimLeave * call writefile(["VimLeave triggered"], "XautoOut", "as")
     au VimLeavePre * call writefile(["VimLeavePre triggered"], "XautoOut", "as")
   END
-  call writefile(lines, 'XsetupAucmd')
+  call writefile(lines, 'XsetupAucmd', 'D')
 
   let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
   let pid_vim = term_getjob(buf)->job_info().process
@@ -200,7 +199,6 @@
 
   %bwipe!
   call delete('.Xsig_TERM.swp')
-  call delete('XsetupAucmd')
   call delete('XautoOut')
 endfunc
 
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 3a99a9b..abf70cd 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -248,8 +248,8 @@
                 \ 'SpellLocal SpellRare', @:)
   endfor
 
-  call writefile(repeat(["Sun is shining"], 30), "XsignOne")
-  call writefile(repeat(["Sky is blue"], 30), "XsignTwo")
+  call writefile(repeat(["Sun is shining"], 30), "XsignOne", 'D')
+  call writefile(repeat(["Sky is blue"], 30), "XsignTwo", 'D')
   call feedkeys(":sign define Sign icon=Xsig\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"sign define Sign icon=XsignOne XsignTwo', @:)
 
@@ -326,8 +326,6 @@
   sign undefine Sign1
   sign undefine Sign2
   enew
-  call delete('XsignOne')
-  call delete('XsignTwo')
 endfunc
 
 func Test_sign_invalid_commands()
@@ -470,7 +468,7 @@
   call assert_fails('call sign_getdefined({})', 'E731:')
 
   " Tests for sign_place()
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
   edit Xsign
 
   call assert_equal(10, sign_place(10, '', 'sign1', 'Xsign',
@@ -576,7 +574,6 @@
 	      \ 'priority' : 10}]}],
 	      \ sign_getplaced('%', {'lnum' : 22}))
 
-  call delete("Xsign")
   call sign_unplace('*')
   call sign_undefine()
   enew | only
@@ -589,7 +586,7 @@
   call sign_unplace('*')
   call sign_undefine()
 
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
 
   let attr = {'text' : '=>', 'linehl' : 'Search', 'texthl' : 'Error'}
   call assert_equal(0, sign_define("sign1", attr))
@@ -829,7 +826,6 @@
   " Error cases
   call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:')
 
-  call delete("Xsign")
   call sign_unplace('*')
   call sign_undefine()
   enew | only
@@ -872,8 +868,8 @@
   call sign_undefine()
 
   " Create two files and define signs
-  call writefile(repeat(["Sun is shining"], 30), "Xsign1")
-  call writefile(repeat(["It is beautiful"], 30), "Xsign2")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign1", 'D')
+  call writefile(repeat(["It is beautiful"], 30), "Xsign2", 'D')
 
   let attr = {'text' : '=>', 'linehl' : 'Search', 'texthl' : 'Error'}
   call sign_define("sign1", attr)
@@ -1182,8 +1178,6 @@
   call sign_unplace('*')
   call sign_undefine()
   enew | only
-  call delete("Xsign1")
-  call delete("Xsign2")
 endfunc
 
 " Tests for auto-generating the sign identifier.
@@ -1195,7 +1189,7 @@
   let attr = {'text' : '=>', 'linehl' : 'Search', 'texthl' : 'Error'}
   call assert_equal(0, sign_define("sign1", attr))
 
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
   edit Xsign
 
   call assert_equal(1, sign_place(0, '', 'sign1', 'Xsign',
@@ -1217,7 +1211,6 @@
   call assert_equal(10,
 	      \ sign_getplaced('Xsign', {'id' : 1})[0].signs[0].lnum)
 
-  call delete("Xsign")
   call sign_unplace('*')
   call sign_undefine()
   enew | only
@@ -1235,7 +1228,7 @@
   call sign_define("sign3", attr)
 
   " Place three signs with different priority in the same line
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
   edit Xsign
 
   call sign_place(1, 'g1', 'sign1', 'Xsign',
@@ -1590,12 +1583,11 @@
   call sign_unplace('*')
   call sign_undefine()
   enew | only
-  call delete("Xsign")
 endfunc
 
 " Tests for memory allocation failures in sign functions
 func Test_sign_memfailures()
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
   edit Xsign
 
   call test_alloc_fail(GetAllocId('sign_getdefined'), 0, 0)
@@ -1632,7 +1624,6 @@
   call sign_unplace('*')
   call sign_undefine()
   enew | only
-  call delete("Xsign")
 endfunc
 
 " Test for auto-adjusting the line number of a placed sign.
@@ -1789,7 +1780,7 @@
 	redraw
    	sign place 10 line=2 name=s1
   END
-  call writefile(lines, 'XtestSigncolumn')
+  call writefile(lines, 'XtestSigncolumn', 'D')
   let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
   call VerifyScreenDump(buf, 'Test_sign_cursor_1', {})
 
@@ -1823,7 +1814,6 @@
 
   " clean up
   call StopVimInTerminal(buf)
-  call delete('XtestSigncolumn')
 endfunc
 
 " Return the 'len' characters in screen starting from (row,col)
@@ -1942,7 +1932,7 @@
 
 " Test for managing multiple signs using the sign functions
 func Test_sign_funcs_multi()
-  call writefile(repeat(["Sun is shining"], 30), "Xsign")
+  call writefile(repeat(["Sun is shining"], 30), "Xsign", 'D')
   edit Xsign
   let bnum = bufnr('')
 
@@ -2054,7 +2044,6 @@
   call sign_unplace('*')
   call sign_undefine()
   enew!
-  call delete("Xsign")
 endfunc
 
 func Test_sign_null_list()
diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim
index 124948e..a2731a8 100644
--- a/src/testdir/test_sort.vim
+++ b/src/testdir/test_sort.vim
@@ -1520,11 +1520,10 @@
     call writefile(v:errors, 'Xresult')
     qall!
   [SCRIPT]
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], '--clean -S Xscript')
     call assert_equal([], readfile('Xresult'))
   endif
-  call delete('Xscript')
   call delete('Xresult')
 endfunc
 
diff --git a/src/testdir/test_source.vim b/src/testdir/test_source.vim
index 51de0e3..3692eee 100644
--- a/src/testdir/test_source.vim
+++ b/src/testdir/test_source.vim
@@ -51,12 +51,10 @@
 " When deleting a file and immediately creating a new one the inode may be
 " recycled.  Vim should not recognize it as the same script.
 func Test_different_script()
-  call writefile(['let s:var = "asdf"'], 'XoneScript')
+  call writefile(['let s:var = "asdf"'], 'XoneScript', 'D')
   source XoneScript
-  call delete('XoneScript')
-  call writefile(['let g:var = s:var'], 'XtwoScript')
+  call writefile(['let g:var = s:var'], 'XtwoScript', 'D')
   call assert_fails('source XtwoScript', 'E121:')
-  call delete('XtwoScript')
 endfunc
 
 " When sourcing a vim script, shebang should be ignored.
diff --git a/src/testdir/test_source_utf8.vim b/src/testdir/test_source_utf8.vim
index d22ce8f..bd7cd8d 100644
--- a/src/testdir/test_source_utf8.vim
+++ b/src/testdir/test_source_utf8.vim
@@ -43,7 +43,7 @@
         \ "map __3 asd\<C-V>\<C-V>",
         \ "map __4 asd\<C-V>\<C-V>\<C-V>",
         \ "map __5 asd\<C-V>\<C-V>\<C-V>",
-        \ ], 'Xtestfile')
+        \ ], 'Xtestfile', 'D')
   source Xtestfile
   enew!
   exe "normal __1\<Esc>\<Esc>__2\<Esc>__3\<Esc>\<Esc>__4\<Esc>__5\<Esc>"
@@ -53,7 +53,6 @@
         \ getline(1, 2))
 
   enew!
-  call delete('Xtestfile')
   unmap __1
   unmap __2
   unmap __3
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 3f77695..4a7a46c 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -762,8 +762,8 @@
 func Test_zz_sal_and_addition()
   set enc=latin1
   set spellfile=
-  call writefile(g:test_data_dic1, "Xtest.dic")
-  call writefile(g:test_data_aff_sal, "Xtest.aff")
+  call writefile(g:test_data_dic1, "Xtest.dic", 'D')
+  call writefile(g:test_data_aff_sal, "Xtest.aff", 'D')
   mkspell! Xtest Xtest
   set spl=Xtest.latin1.spl spell
   call assert_equal('kbltykk', soundfold('goobledygoook'))
@@ -771,7 +771,7 @@
   call assert_equal('*fls kswts tl', soundfold('oeverloos gezwets edale'))
 
   "also use an addition file
-  call writefile(["/regions=usgbnz", "elequint/2", "elekwint/3"], "Xtest.latin1.add")
+  call writefile(["/regions=usgbnz", "elequint/2", "elekwint/3"], "Xtest.latin1.add", 'D')
   mkspell! Xtest.latin1.add.spl Xtest.latin1.add
 
   bwipe!
@@ -808,10 +808,9 @@
 
 func Test_region_error()
   messages clear
-  call writefile(["/regions=usgbnz", "elequint/0"], "Xtest.latin1.add")
+  call writefile(["/regions=usgbnz", "elequint/0"], "Xtest.latin1.add", 'D')
   mkspell! Xtest.latin1.add.spl Xtest.latin1.add
   call assert_match('Invalid region nr in Xtest.latin1.add line 2: 0', execute('messages'))
-  call delete('Xtest.latin1.add')
   call delete('Xtest.latin1.add.spl')
 endfunc
 
diff --git a/src/testdir/test_spell_utf8.vim b/src/testdir/test_spell_utf8.vim
index 91ada1e..bb2c354 100644
--- a/src/testdir/test_spell_utf8.vim
+++ b/src/testdir/test_spell_utf8.vim
@@ -726,8 +726,8 @@
 " Test with SAL instead of SOFO items; test automatic reloading
 func Test_spell_sal_and_addition()
   set spellfile=
-  call writefile(g:test_data_dic1, "Xtest.dic")
-  call writefile(g:test_data_aff_sal, "Xtest.aff")
+  call writefile(g:test_data_dic1, "Xtest.dic", 'D')
+  call writefile(g:test_data_aff_sal, "Xtest.aff", 'D')
   mkspell! Xtest Xtest
   set spl=Xtest.utf-8.spl spell
   call assert_equal('kbltykk', soundfold('goobledygoook'))
@@ -735,7 +735,7 @@
   call assert_equal('*fls kswts tl', soundfold('oeverloos gezwets edale'))
 
   "also use an addition file
-  call writefile(["/regions=usgbnz", "elequint/2", "elekwint/3"], "Xtest.utf-8.add")
+  call writefile(["/regions=usgbnz", "elequint/2", "elekwint/3"], "Xtest.utf-8.add", 'D')
   mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
 
   bwipe!
diff --git a/src/testdir/test_spellfile.vim b/src/testdir/test_spellfile.vim
index 28e69bd..d8d954b 100644
--- a/src/testdir/test_spellfile.vim
+++ b/src/testdir/test_spellfile.vim
@@ -212,7 +212,7 @@
 " The spell file format is described in spellfile.c
 func Test_spellfile_format_error()
   let save_rtp = &rtp
-  call mkdir('Xtest/spell', 'p')
+  call mkdir('Xtest/spell', 'pR')
   let splfile = './Xtest/spell/Xtest.utf-8.spl'
 
   " empty spell file
@@ -384,13 +384,12 @@
   call Spellfile_Test(0zFF00000000000000000000000201010000, 'E759:')
 
   let &rtp = save_rtp
-  call delete('Xtest', 'rf')
 endfunc
 
 " Test for format errors in suggest file
 func Test_sugfile_format_error()
   let save_rtp = &rtp
-  call mkdir('Xtest/spell', 'p')
+  call mkdir('Xtest/spell', 'pR')
   let splfile = './Xtest/spell/Xtest.utf-8.spl'
   let sugfile = './Xtest/spell/Xtest.utf-8.sug'
 
@@ -473,7 +472,6 @@
   set nospell spelllang&
 
   let &rtp = save_rtp
-  call delete('Xtest', 'rf')
 endfunc
 
 " Test for using :mkspell to create a spell file from a list of words
@@ -486,7 +484,7 @@
     /encoding=latin1
     example
   [END]
-  call writefile(lines, 'Xwordlist.dic')
+  call writefile(lines, 'Xwordlist.dic', 'D')
   let output = execute('mkspell Xwordlist.spl Xwordlist.dic')
   call assert_match('Duplicate /encoding= line ignored in Xwordlist.dic line 4: /encoding=latin1', output)
 
@@ -559,7 +557,6 @@
   call assert_match('Compressed keep-case:', output)
 
   call delete('Xwordlist.spl')
-  call delete('Xwordlist.dic')
 endfunc
 
 " Test for the :mkspell command
@@ -600,8 +597,8 @@
   CheckNotMSWindows
 
   " No word count in .dic file
-  call writefile([], 'Xtest.dic')
-  call writefile([], 'Xtest.aff')
+  call writefile([], 'Xtest.dic', 'D')
+  call writefile([], 'Xtest.aff', 'D')
   call assert_fails('mkspell! Xtest.spl Xtest', 'E760:')
 
   " create a .dic file for the tests below
@@ -822,20 +819,14 @@
 
   " use multiple .aff files with different values for COMPOUNDWORDMAX and
   " MIDWORD (number and string)
-  call writefile(['1', 'world'], 'Xtest_US.dic')
-  call writefile(['1', 'world'], 'Xtest_CA.dic')
-  call writefile(["COMPOUNDWORDMAX 3", "MIDWORD '-"], 'Xtest_US.aff')
-  call writefile(["COMPOUNDWORDMAX 4", "MIDWORD '="], 'Xtest_CA.aff')
+  call writefile(['1', 'world'], 'Xtest_US.dic', 'D')
+  call writefile(['1', 'world'], 'Xtest_CA.dic', 'D')
+  call writefile(["COMPOUNDWORDMAX 3", "MIDWORD '-"], 'Xtest_US.aff', 'D')
+  call writefile(["COMPOUNDWORDMAX 4", "MIDWORD '="], 'Xtest_CA.aff', 'D')
   let output = execute('mkspell! Xtest.spl Xtest_US Xtest_CA')
   call assert_match('COMPOUNDWORDMAX value differs from what is used in another .aff file', output)
   call assert_match('MIDWORD value differs from what is used in another .aff file', output)
-  call delete('Xtest_US.dic')
-  call delete('Xtest_CA.dic')
-  call delete('Xtest_US.aff')
-  call delete('Xtest_CA.aff')
 
-  call delete('Xtest.dic')
-  call delete('Xtest.aff')
   call delete('Xtest.spl')
   call delete('Xtest.sug')
 endfunc
@@ -855,8 +846,8 @@
 endfunc
 
 func Test_spellfile_verbose()
-  call writefile(['1', 'one'], 'XtestVerbose.dic')
-  call writefile([], 'XtestVerbose.aff')
+  call writefile(['1', 'one'], 'XtestVerbose.dic', 'D')
+  call writefile([], 'XtestVerbose.aff', 'D')
   mkspell! XtestVerbose-utf8.spl XtestVerbose
   set spell
 
@@ -869,15 +860,13 @@
   call assert_notmatch('Reading spell file "XtestVerbose-utf8.spl"', a)
 
   set spell& spelllang&
-  call delete('XtestVerbose.dic')
-  call delete('XtestVerbose.aff')
   call delete('XtestVerbose-utf8.spl')
 endfunc
 
 " Test NOBREAK (see :help spell-NOBREAK)
 func Test_NOBREAK()
-  call writefile(['3', 'one', 'two', 'three' ], 'XtestNOBREAK.dic')
-  call writefile(['NOBREAK' ], 'XtestNOBREAK.aff')
+  call writefile(['3', 'one', 'two', 'three' ], 'XtestNOBREAK.dic', 'D')
+  call writefile(['NOBREAK' ], 'XtestNOBREAK.aff', 'D')
 
   mkspell! XtestNOBREAK-utf8.spl XtestNOBREAK
   set spell spelllang=XtestNOBREAK-utf8.spl
@@ -899,8 +888,6 @@
 
   bw!
   set spell& spelllang&
-  call delete('XtestNOBREAK.dic')
-  call delete('XtestNOBREAK.aff')
   call delete('XtestNOBREAK-utf8.spl')
 endfunc
 
@@ -910,11 +897,11 @@
         \         'one/c',
         \         'two/c',
         \         'three/c',
-        \         'four'], 'XtestCHECKCOMPOUNDPATTERN.dic')
+        \         'four'], 'XtestCHECKCOMPOUNDPATTERN.dic', 'D')
   " Forbid compound words where first word ends with 'wo' and second starts with 'on'.
   call writefile(['CHECKCOMPOUNDPATTERN 1',
         \         'CHECKCOMPOUNDPATTERN wo on',
-        \         'COMPOUNDFLAG c'], 'XtestCHECKCOMPOUNDPATTERN.aff')
+        \         'COMPOUNDFLAG c'], 'XtestCHECKCOMPOUNDPATTERN.aff', 'D')
 
   mkspell! XtestCHECKCOMPOUNDPATTERN-utf8.spl XtestCHECKCOMPOUNDPATTERN
   set spell spelllang=XtestCHECKCOMPOUNDPATTERN-utf8.spl
@@ -938,8 +925,6 @@
   endfor
 
   set spell& spelllang&
-  call delete('XtestCHECKCOMPOUNDPATTERN.dic')
-  call delete('XtestCHECKCOMPOUNDPATTERN.aff')
   call delete('XtestCHECKCOMPOUNDPATTERN-utf8.spl')
 endfunc
 
@@ -948,15 +933,15 @@
   call writefile(['3',
         \         'one/c',
         \         'two/c',
-        \         'three/c'], 'XtestNOCOMPOUNDSUGS.dic')
+        \         'three/c'], 'XtestNOCOMPOUNDSUGS.dic', 'D')
 
   " pass 0 tests without NOCOMPOUNDSUGS, pass 1 tests with NOCOMPOUNDSUGS
   for pass in [0, 1]
     if pass == 0
-      call writefile(['COMPOUNDFLAG c'], 'XtestNOCOMPOUNDSUGS.aff')
+      call writefile(['COMPOUNDFLAG c'], 'XtestNOCOMPOUNDSUGS.aff', 'D')
     else
       call writefile(['NOCOMPOUNDSUGS',
-          \           'COMPOUNDFLAG c'], 'XtestNOCOMPOUNDSUGS.aff')
+          \           'COMPOUNDFLAG c'], 'XtestNOCOMPOUNDSUGS.aff', 'D')
     endif
 
     mkspell! XtestNOCOMPOUNDSUGS-utf8.spl XtestNOCOMPOUNDSUGS
@@ -984,8 +969,6 @@
   endfor
 
   set spell& spelllang&
-  call delete('XtestNOCOMPOUNDSUGS.dic')
-  call delete('XtestNOCOMPOUNDSUGS.aff')
   call delete('XtestNOCOMPOUNDSUGS-utf8.spl')
 endfunc
 
@@ -998,8 +981,8 @@
         \         'any',
         \         'tee',
         \         'the',
-        \         'ted'], 'XtestCOMMON.dic')
-  call writefile(['COMMON the and'], 'XtestCOMMON.aff')
+        \         'ted'], 'XtestCOMMON.dic', 'D')
+  call writefile(['COMMON the and'], 'XtestCOMMON.aff', 'D')
 
   mkspell! XtestCOMMON-utf8.spl XtestCOMMON
   set spell spelllang=XtestCOMMON-utf8.spl
@@ -1011,15 +994,13 @@
   call assert_equal(['the', 'tee'], spellsuggest('dhe', 2))
 
   set spell& spelllang&
-  call delete('XtestCOMMON.dic')
-  call delete('XtestCOMMON.aff')
   call delete('XtestCOMMON-utf8.spl')
 endfunc
 
 " Test NOSUGGEST (see :help spell-COMMON)
 func Test_spellfile_NOSUGGEST()
-  call writefile(['2', 'foo/X', 'fog'], 'XtestNOSUGGEST.dic')
-  call writefile(['NOSUGGEST X'], 'XtestNOSUGGEST.aff')
+  call writefile(['2', 'foo/X', 'fog'], 'XtestNOSUGGEST.dic', 'D')
+  call writefile(['NOSUGGEST X'], 'XtestNOSUGGEST.aff', 'D')
 
   mkspell! XtestNOSUGGEST-utf8.spl XtestNOSUGGEST
   set spell spelllang=XtestNOSUGGEST-utf8.spl
@@ -1037,8 +1018,6 @@
   call assert_equal(['fog'], spellsuggest('fogg', 1))
 
   set spell& spelllang&
-  call delete('XtestNOSUGGEST.dic')
-  call delete('XtestNOSUGGEST.aff')
   call delete('XtestNOSUGGEST-utf8.spl')
 endfunc
 
@@ -1047,7 +1026,7 @@
 func Test_spellfile_CIRCUMFIX()
   " Example taken verbatim from https://github.com/hunspell/hunspell/tree/master/tests
   call writefile(['1',
-        \         'nagy/C	po:adj'], 'XtestCIRCUMFIX.dic')
+        \         'nagy/C	po:adj'], 'XtestCIRCUMFIX.dic', 'D')
   call writefile(['# circumfixes: ~ obligate prefix/suffix combinations',
         \         '# superlative in Hungarian: leg- (prefix) AND -bb (suffix)',
         \         '',
@@ -1062,7 +1041,7 @@
         \         'SFX C Y 3',
         \         'SFX C 0 obb . is:COMPARATIVE',
         \         'SFX C 0 obb/AX . is:SUPERLATIVE',
-        \         'SFX C 0 obb/BX . is:SUPERSUPERLATIVE'], 'XtestCIRCUMFIX.aff')
+        \         'SFX C 0 obb/BX . is:SUPERSUPERLATIVE'], 'XtestCIRCUMFIX.aff', 'D')
 
   mkspell! XtestCIRCUMFIX-utf8.spl XtestCIRCUMFIX
   set spell spelllang=XtestCIRCUMFIX-utf8.spl
@@ -1081,8 +1060,6 @@
   endfor
 
   set spell& spelllang&
-  call delete('XtestCIRCUMFIX.dic')
-  call delete('XtestCIRCUMFIX.aff')
   call delete('XtestCIRCUMFIX-utf8.spl')
 endfunc
 
@@ -1094,12 +1071,12 @@
         \         'SFX A are hiamo [cg]are',
         \         'SFX A re mo iare',
         \         'SFX A re vamo are'],
-        \         'XtestSFX.aff')
+        \         'XtestSFX.aff', 'D')
   " Examples of Italian verbs:
   " - cantare = to sing
   " - cercare = to search
   " - odiare = to hate
-  call writefile(['3', 'cantare/A', 'cercare/A', 'odiare/A'], 'XtestSFX.dic')
+  call writefile(['3', 'cantare/A', 'cercare/A', 'odiare/A'], 'XtestSFX.dic', 'D')
 
   mkspell! XtestSFX-utf8.spl XtestSFX
   set spell spelllang=XtestSFX-utf8.spl
@@ -1123,8 +1100,6 @@
   call assert_equal(['odiamo'],    spellsuggest('odiiamo', 1))
 
   set spell& spelllang&
-  call delete('XtestSFX.dic')
-  call delete('XtestSFX.aff')
   call delete('XtestSFX-utf8.spl')
 endfunc
 
@@ -1133,7 +1108,7 @@
 func Test_init_spellfile()
   let save_rtp = &rtp
   let save_encoding = &encoding
-  call mkdir('Xrtp/spell', 'p')
+  call mkdir('Xrtp/spell', 'pR')
   call writefile(['vim'], 'Xrtp/spell/Xtest.dic')
   silent mkspell Xrtp/spell/Xtest.utf-8.spl Xrtp/spell/Xtest.dic
   set runtimepath=./Xrtp
@@ -1143,8 +1118,8 @@
   call assert_equal('./Xrtp/spell/Xtest.utf-8.add', &spellfile)
   call assert_equal(['abc'], readfile('Xrtp/spell/Xtest.utf-8.add'))
   call assert_true(filereadable('Xrtp/spell/Xtest.utf-8.spl'))
+
   set spell& spelllang& spellfile&
-  call delete('Xrtp', 'rf')
   let &encoding = save_encoding
   let &rtp = save_rtp
   %bw!
@@ -1170,12 +1145,10 @@
 
 " this was using a NULL pointer
 func Test_mkspell_empty_dic()
-  call writefile(['1'], 'XtestEmpty.dic')
-  call writefile(['SOFOFROM abcd', 'SOFOTO ABCD', 'SAL CIA X'], 'XtestEmpty.aff')
+  call writefile(['1'], 'XtestEmpty.dic', 'D')
+  call writefile(['SOFOFROM abcd', 'SOFOTO ABCD', 'SAL CIA X'], 'XtestEmpty.aff', 'D')
   mkspell! XtestEmpty.spl XtestEmpty
 
-  call delete('XtestEmpty.dic')
-  call delete('XtestEmpty.aff')
   call delete('XtestEmpty.spl')
 endfunc
 
diff --git a/src/testdir/test_startup.vim b/src/testdir/test_startup.vim
index 7995cd2..6c2fbbd 100644
--- a/src/testdir/test_startup.vim
+++ b/src/testdir/test_startup.vim
@@ -43,14 +43,14 @@
     quit
   [CODE]
 
-  call mkdir('Xhere/plugin', 'p')
+  call mkdir('Xhere/plugin', 'pR')
   call writefile(['let g:sequence .= "here "'], 'Xhere/plugin/here.vim')
-  call mkdir('Xanother/plugin', 'p')
+  call mkdir('Xanother/plugin', 'pR')
   call writefile(['let g:sequence .= "another "'], 'Xanother/plugin/another.vim')
   call mkdir('Xhere/pack/foo/start/foobar/plugin', 'p')
   call writefile(['let g:sequence .= "pack "'], 'Xhere/pack/foo/start/foobar/plugin/foo.vim')
 
-  call mkdir('Xafter/plugin', 'p')
+  call mkdir('Xafter/plugin', 'pR')
   call writefile(['let g:sequence .= "after "'], 'Xafter/plugin/later.vim')
 
   if RunVim(before, after, '')
@@ -72,9 +72,6 @@
 
   call delete('Xtestout')
   call delete('Xsequence')
-  call delete('Xhere', 'rf')
-  call delete('Xanother', 'rf')
-  call delete('Xafter', 'rf')
 endfunc
 
 func Test_pack_in_rtp_when_plugins_run()
@@ -92,7 +89,7 @@
   let after = [
 	\ 'quit',
 	\ ]
-  call mkdir('Xhere/plugin', 'p')
+  call mkdir('Xhere/plugin', 'pR')
   call writefile(['redir! > Xtestout', 'silent set runtimepath?', 'silent! call foo#Trigger()', 'redir END'], 'Xhere/plugin/here.vim')
   call mkdir('Xhere/pack/foo/start/foobar/autoload', 'p')
   call writefile(['function! foo#Trigger()', 'echo "autoloaded foo"', 'endfunction'], 'Xhere/pack/foo/start/foobar/autoload/foo.vim')
@@ -105,7 +102,6 @@
   endif
 
   call delete('Xtestout')
-  call delete('Xhere', 'rf')
 endfunc
 
 func Test_help_arg()
@@ -228,7 +224,6 @@
     call assert_equal('foo', bn1)
     call assert_equal('bar', bn2)
   endif
-
   call delete('Xtestout')
 endfunc
 
@@ -303,7 +298,7 @@
       return 666
     }
   END
-  call writefile(lines, 'Xbadfile.c')
+  call writefile(lines, 'Xbadfile.c', 'D')
 
   let after =<< trim [CODE]
     call writefile([&errorfile, string(getpos("."))], "XtestoutQarg")
@@ -314,7 +309,7 @@
 
   " Test with default argument '-q'.
   call assert_equal('errors.err', &errorfile)
-  call writefile(["Xbadfile.c:4:12: error: expected ';' before '}' token"], 'errors.err')
+  call writefile(["Xbadfile.c:4:12: error: expected ';' before '}' token"], 'errors.err', 'D')
   if RunVim([], after, '-q')
     let lines = readfile('XtestoutQarg')
     call assert_equal(['errors.err',
@@ -323,10 +318,9 @@
 	\             lines)
   endif
   call delete('XtestoutQarg')
-  call delete('errors.err')
 
   " Test with explicit argument '-q XerrorsQarg' (with space).
-  call writefile(["Xbadfile.c:4:12: error: expected ';' before '}' token"], 'XerrorsQarg')
+  call writefile(["Xbadfile.c:4:12: error: expected ';' before '}' token"], 'XerrorsQarg', 'D')
   if RunVim([], after, '-q XerrorsQarg')
     let lines = readfile('XtestoutQarg')
     call assert_equal(['XerrorsQarg',
@@ -349,9 +343,7 @@
   let out = system(GetVimCommand() .. ' -q xyz.err')
   call assert_equal(3, v:shell_error)
 
-  call delete('Xbadfile.c')
   call delete('XtestoutQarg')
-  call delete('XerrorsQarg')
 endfunc
 
 " Test the -V[N]{filename} argument to set the 'verbose' option to N
@@ -400,7 +392,7 @@
 " Test the -A, -F and -H arguments (Arabic, Farsi and Hebrew modes).
 func Test_A_F_H_arg()
   let after =<< trim [CODE]
-    call writefile([&rightleft, &arabic, &fkmap, &hkmap], "Xtestout")
+    call writefile([&rightleft, &arabic, &fkmap, &hkmap], "Xtestout", 'D')
     qall
   [CODE]
 
@@ -420,8 +412,6 @@
     let lines = readfile('Xtestout')
     call assert_equal(['1', '0', '0', '1'], lines)
   endif
-
-  call delete('Xtestout')
 endfunc
 
 " Test the --echo-wid argument (for GTK GUI only).
@@ -799,7 +789,7 @@
 
 func Test_zzz_startinsert()
   " Test :startinsert
-  call writefile(['123456'], 'Xtestout')
+  call writefile(['123456'], 'Xtestout', 'D')
   let after =<< trim [CODE]
     :startinsert
     call feedkeys("foobar\<c-o>:wq\<cr>","t")
@@ -820,7 +810,6 @@
     let lines = readfile('Xtestout')
     call assert_equal(['123456foobar'], lines)
   endif
-  call delete('Xtestout')
 endfunc
 
 func Test_issue_3969()
@@ -898,8 +887,8 @@
         \ "first\tXfile1\t/^    \\zsfirst$/",
         \ "second\tXfile1\t/^    \\zssecond$/",
         \ "third\tXfile1\t/^    \\zsthird$/"],
-        \ 'Xtags')
-  call writefile(['    first', '    second', '    third'], 'Xfile1')
+        \ 'Xtags', 'D')
+  call writefile(['    first', '    second', '    third'], 'Xfile1', 'D')
 
   for t_arg in ['-t second', '-tsecond']
     if RunVim(before, after, t_arg)
@@ -907,9 +896,6 @@
       call delete('Xtestout')
     endif
   endfor
-
-  call delete('Xtags')
-  call delete('Xfile1')
 endfunc
 
 " Test the '-T' argument which sets the 'term' option.
@@ -1006,7 +992,7 @@
     call assert_match('^E282:', v:errmsg)
     call writefile(v:errors, 'Xtestout')
   [CODE]
-  call writefile(after, 'Xafter')
+  call writefile(after, 'Xafter', 'D')
 
   let cmd = GetVimCommandCleanTerm() . ' -u Xvimrc_missing -S Xafter'
   let buf = term_start(cmd, {'term_rows' : 10})
@@ -1017,7 +1003,7 @@
   call WaitForAssert({-> assert_match(':', term_getline(buf, 10))})
   call StopVimInTerminal(buf)
   call assert_equal([], readfile('Xtestout'))
-  call delete('Xafter')
+
   call delete('Xtestout')
 endfunc
 
@@ -1029,13 +1015,13 @@
     call writefile(v:errors, 'Xtestout')
     qall
   [CODE]
-  call writefile(after, 'Xafter')
+  call writefile(after, 'Xafter', 'D')
   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "set enc=utf8"'
   call setenv('VIMINIT', 'let viminit_found="yes"')
   exe "silent !" . cmd
   call assert_equal([], readfile('Xtestout'))
+
   call delete('Xtestout')
-  call delete('Xafter')
 endfunc
 
 " Test for using the $EXINIT environment variable
@@ -1046,13 +1032,13 @@
     call writefile(v:errors, 'Xtestout')
     qall
   [CODE]
-  call writefile(after, 'Xafter')
+  call writefile(after, 'Xafter', 'D')
   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "set enc=utf8"'
   call setenv('EXINIT', 'let exinit_found="yes"')
   exe "silent !" . cmd
   call assert_equal([], readfile('Xtestout'))
+
   call delete('Xtestout')
-  call delete('Xafter')
 endfunc
 
 " Test for using the 'exrc' option
@@ -1064,13 +1050,12 @@
     call writefile(v:errors, 'Xtestout')
     qall
   [CODE]
-  call mkdir('Xrcdir')
+  call mkdir('Xrcdir', 'R')
   call writefile(['let exrc_found=37'], 'Xrcdir/.exrc')
   call writefile(after, 'Xrcdir/Xafter')
   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "cd Xrcdir" --cmd "set enc=utf8 exrc secure"'
   exe "silent !" . cmd
   call assert_equal([], readfile('Xrcdir/Xtestout'))
-  call delete('Xrcdir', 'rf')
 endfunc
 
 " Test for starting Vim with a non-terminal as input/output
@@ -1138,7 +1123,7 @@
   " Can't catch the output of gvim.
   CheckNotGui
 
-  call writefile(["iVim Editor\<Esc>:q!\<CR>"], 'Xscriptin', 'b')
+  call writefile(["iVim Editor\<Esc>:q!\<CR>"], 'Xscriptin', 'bD')
   if RunVim([], [], '-s Xscriptin -w Xscriptout')
     call assert_equal(["iVim Editor\e:q!\r"], readfile('Xscriptout'))
     call delete('Xscriptout')
@@ -1162,7 +1147,6 @@
       call delete('Xresult')
     endif
   endfor
-  call delete('Xscriptin')
 endfunc
 
 " Test for the "-s scriptin" argument
@@ -1174,10 +1158,9 @@
   let m = system(GetVimCommand() .. " -s abcxyz")
   call assert_equal("Cannot open for reading: \"abcxyz\"\n", m)
 
-  call writefile([], 'Xinput')
+  call writefile([], 'Xinput', 'D')
   let m = system(GetVimCommand() .. " -s Xinput -s Xinput")
   call assert_equal("Attempt to open script file again: \"-s Xinput\"\n", m)
-  call delete('Xinput')
 endfunc
 
 " Test for the "-n" (no swap file) argument
@@ -1252,7 +1235,7 @@
 func Test_progname()
   CheckUnix
 
-  call mkdir('Xprogname', 'p')
+  call mkdir('Xprogname', 'pD')
   call writefile(['silent !date',
   \               'call writefile([mode(1), '
   \               .. '&insertmode, &diff, &readonly, &updatecount, '
@@ -1324,12 +1307,11 @@
   endfor
 
   call delete('Xprogname_after')
-  call delete('Xprogname', 'd')
 endfunc
 
 " Test for doing a write from .vimrc
 func Test_write_in_vimrc()
-  call writefile(['silent! write'], 'Xvimrc')
+  call writefile(['silent! write'], 'Xvimrc', 'D')
   let after =<< trim [CODE]
     call assert_match('E32: ', v:errmsg)
     call writefile(v:errors, 'Xtestout')
@@ -1339,7 +1321,6 @@
     call assert_equal([], readfile('Xtestout'))
     call delete('Xtestout')
   endif
-  call delete('Xvimrc')
 endfunc
 
 func Test_echo_true_in_cmd()
@@ -1350,11 +1331,11 @@
       call writefile(['done'], 'Xresult')
       quit
   END
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], '--cmd "source Xscript"')
     call assert_equal(['done'], readfile('Xresult'))
   endif
-  call delete('Xscript')
+
   call delete('Xresult')
 endfunc
 
@@ -1365,11 +1346,11 @@
       call writefile(['done'], 'Xresult')
       qa!
   END
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], "--clean -e -s --cmd 'file x|new|file x' --cmd 'so Xscript'")
     call assert_equal(['done'], readfile('Xresult'))
   endif
-  call delete('Xscript')
+
   call delete('Xresult')
 endfunc
 
diff --git a/src/testdir/test_startup_utf8.vim b/src/testdir/test_startup_utf8.vim
index 33f50a9..e8b99e7 100644
--- a/src/testdir/test_startup_utf8.vim
+++ b/src/testdir/test_startup_utf8.vim
@@ -6,7 +6,7 @@
 
 func Test_read_stdin_utf8()
   let linesin = ['テスト', '€ÀÈÌÒÙ']
-  call writefile(linesin, 'Xtestin')
+  call writefile(linesin, 'Xtestin', 'D')
   let before = [
 	\ 'set enc=utf-8',
 	\ 'set fencs=cp932,utf-8',
@@ -26,8 +26,8 @@
   else
     call assert_equal('', 'RunVimPiped failed.')
   endif
+
   call delete('Xtestout')
-  call delete('Xtestin')
 endfunc
 
 func Test_read_fifo_utf8()
@@ -41,7 +41,7 @@
     throw 'Skipped: bash or zsh is required'
   endif
   let linesin = ['テスト', '€ÀÈÌÒÙ']
-  call writefile(linesin, 'Xtestin')
+  call writefile(linesin, 'Xtestin', 'D')
   let before = [
 	\ 'set enc=utf-8',
 	\ 'set fencs=cp932,utf-8',
@@ -56,8 +56,8 @@
   else
     call assert_equal('', 'RunVim failed.')
   endif
+
   call delete('Xtestout')
-  call delete('Xtestin')
 endfunc
 
 func Test_detect_ambiwidth()
@@ -69,14 +69,13 @@
 	\ 'set ambiwidth=double',
 	\ 'call test_option_not_set("ambiwidth")',
 	\ 'redraw',
-	\ ], 'Xscript')
+	\ ], 'Xscript', 'D')
   let buf = RunVimInTerminal('-S Xscript', #{keep_t_u7: 1})
   call TermWait(buf)
   call term_sendkeys(buf, "S\<C-R>=&ambiwidth\<CR>\<Esc>")
   call WaitForAssert({-> assert_match('single', term_getline(buf, 1))})
 
   call StopVimInTerminal(buf)
-  call delete('Xscript')
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_stat.vim b/src/testdir/test_stat.vim
index e801bfc..ed123e4 100644
--- a/src/testdir/test_stat.vim
+++ b/src/testdir/test_stat.vim
@@ -63,7 +63,7 @@
   let fname = 'Xtest.tmp'
 
   let fl = ['Hello World!']
-  call writefile(fl, fname)
+  call writefile(fl, fname, 'D')
   set autoread
   exec 'e' fname
   call SleepForTimestamp()
@@ -72,8 +72,6 @@
   call writefile(fl, fname)
   checktime
   call assert_equal(fl[0], getline(1))
-
-  call delete(fname)
 endfunc
 
 func Test_checktime_fast()
@@ -82,7 +80,7 @@
   let fname = 'Xtest.tmp'
 
   let fl = ['Hello World!']
-  call writefile(fl, fname)
+  call writefile(fl, fname, 'D')
   set autoread
   exec 'e' fname
   let fl = readfile(fname)
@@ -90,8 +88,6 @@
   call writefile(fl, fname)
   checktime
   call assert_equal(fl[0], getline(1))
-
-  call delete(fname)
 endfunc
 
 func Test_autoread_fast()
@@ -105,12 +101,10 @@
   call setline(1, 'foo')
   w!
   sleep 10m
-  call writefile(['bar'], 'Xautoread')
+  call writefile(['bar'], 'Xautoread', 'D')
   sleep 10m
   checktime
   call assert_equal('bar', trim(getline(1)))
-
-  call delete('Xautoread')
 endfunc
 
 func Test_autoread_file_deleted()
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index e60140f..15f2083 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -470,14 +470,13 @@
     set laststatus=2
     let &statusline = '%#StatColorHi2#%(✓%#StatColorHi2#%) Q≡'
   END
-  call writefile(lines, 'XTest_statusline')
+  call writefile(lines, 'XTest_statusline', 'D')
 
   let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 10, 'cols': 50})
   call VerifyScreenDump(buf, 'Test_statusline_1', {})
 
   " clean up
   call StopVimInTerminal(buf)
-  call delete('XTest_statusline')
 endfunc
 
 func Test_statusline_using_mode()
@@ -488,7 +487,7 @@
     split
     setlocal statusline=+%{mode()}+
   END
-  call writefile(lines, 'XTest_statusline')
+  call writefile(lines, 'XTest_statusline', 'D')
 
   let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 7, 'cols': 50})
   call VerifyScreenDump(buf, 'Test_statusline_mode_1', {})
@@ -499,7 +498,6 @@
   " clean up
   call term_sendkeys(buf, "close\<CR>")
   call StopVimInTerminal(buf)
-  call delete('XTest_statusline')
 endfunc
 
 func Test_statusline_after_split_vsplit()
@@ -552,13 +550,12 @@
     hi! link User2 ErrorMsg
     set statusline=%.5(%1*ABC%2*DEF%1*GHI%)
   END
-  call writefile(lines, 'XTest_statusline')
+  call writefile(lines, 'XTest_statusline', 'D')
 
   let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 6})
   call VerifyScreenDump(buf, 'Test_statusline_hl', {})
 
   call StopVimInTerminal(buf)
-  call delete('XTest_statusline')
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim
index 1e73ba6..67df60f 100644
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -860,7 +860,7 @@
     call writefile(v:errors, 'Xresult')
     qall!
   [SCRIPT]
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], '--clean -S Xscript')
     call assert_equal([], readfile('Xresult'))
   endif
@@ -876,7 +876,6 @@
     call assert_equal([], readfile('Xresult'))
   endif
 
-  call delete('Xscript')
   call delete('Xresult')
 endfunc
 
@@ -1075,13 +1074,12 @@
     redir END
     qall!
   [SCRIPT]
-  call writefile(lines, 'Xscript')
+  call writefile(lines, 'Xscript', 'D')
   if RunVim([], [], '-u NONE -S Xscript')
     call assert_match('E565: Not allowed to change text or change window',
           \ readfile('Xresult')->join('XX'))
   endif
 
-  call delete('Xscript')
   call delete('Xresult')
 endfunc
 
diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim
index a464940..5237edc 100644
--- a/src/testdir/test_swap.vim
+++ b/src/testdir/test_swap.vim
@@ -16,7 +16,7 @@
 	      \ 'line 2 Abcdefghij',
 	      \ 'line 3 Abcdefghij',
 	      \ 'end of testfile']
-  call writefile(content, 'Xtest1')
+  call writefile(content, 'Xtest1', 'D')
 
   "  '.', swap file in the same directory as file
   set dir=.,~
@@ -30,7 +30,7 @@
   " './dir', swap file in a directory relative to the file
   set dir=./Xtest2,.,~
 
-  call mkdir("Xtest2")
+  call mkdir("Xtest2", 'R')
   edit Xtest1
   call assert_equal([], glob(swfname, 1, 1, 1))
   let swfname = "Xtest2/Xtest1.swp"
@@ -40,7 +40,7 @@
   " 'dir', swap file in directory relative to the current dir
   set dir=Xtest.je,~
 
-  call mkdir("Xtest.je")
+  call mkdir("Xtest.je", 'R')
   call writefile(content, 'Xtest2/Xtest3')
   edit Xtest2/Xtest3
   call assert_equal(["Xtest2/Xtest3"], glob("Xtest2/*", 1, 1, 1))
@@ -49,9 +49,6 @@
   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()
@@ -135,7 +132,7 @@
   let info = swapinfo('doesnotexist')
   call assert_equal('Cannot open file', info.error)
 
-  call writefile(['burp'], 'Xnotaswapfile')
+  call writefile(['burp'], 'Xnotaswapfile', 'D')
   let info = swapinfo('Xnotaswapfile')
   call assert_equal('Cannot read file', info.error)
   call delete('Xnotaswapfile')
@@ -143,7 +140,6 @@
   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()
@@ -191,7 +187,7 @@
   " Close the file and recreate the swap file.
   " Now editing the file will run into the process still existing
   quit
-  call writefile(swapfile_bytes, swapfile_name)
+  call writefile(swapfile_bytes, swapfile_name, 'D')
   let s:swap_choice = 'e'
   let s:swapname = ''
   split XswapfileText
@@ -219,7 +215,6 @@
   call assert_equal(fnamemodify(swapfile_name, ':t'), fnamemodify(s:swapname, ':t'))
 
   call delete('XswapfileText')
-  call delete(swapfile_name)
   augroup test_swapfile_delete
     autocmd!
   augroup END
@@ -233,7 +228,7 @@
     autocmd SwapExists * let v:swapchoice = 'r'
   augroup END
 
-  call mkdir('Xswap')
+  call mkdir('Xswap', 'R')
   let $Xswap = 'foo'  " Check for issue #4369.
   set dir=Xswap//
   " Create a valid swapfile by editing a file.
@@ -246,7 +241,7 @@
 
   " Close the file and recreate the swap file.
   quit
-  call writefile(swapfile_bytes, swapfile_name)
+  call writefile(swapfile_bytes, swapfile_name, 'D')
   " Edit the file again. This triggers recovery.
   try
     split Xswap/text
@@ -258,9 +253,6 @@
   call assert_equal(['one', 'two', 'three'], getline(1, 3))
   quit!
 
-  call delete('Xswap/text')
-  call delete(swapfile_name)
-  call delete('Xswap', 'd')
   unlet $Xswap
   set dir&
   augroup test_swap_recover
@@ -288,7 +280,7 @@
   " Close and delete the file and recreate the swap file.
   quit
   call delete('Xtest.scr')
-  call writefile(swapfile_bytes, swapfile_name)
+  call writefile(swapfile_bytes, swapfile_name, 'D')
   " Edit the file again. This triggers recovery.
   try
     split Xtest.scr
@@ -301,7 +293,6 @@
   quit!
 
   call delete('Xtest.scr')
-  call delete(swapfile_name)
   augroup test_swap_recover_ext
     autocmd!
   augroup END
@@ -329,7 +320,7 @@
   " Close and delete the file and recreate the swap file.
   quit
   call delete('Xtest.scr')
-  call writefile(swapfile_bytes, swapfile_name)
+  call writefile(swapfile_bytes, swapfile_name, 'D')
   " Split edit the file again. This should fail to open the window
   try
     split Xtest.scr
@@ -340,7 +331,6 @@
   call assert_equal(1, winnr('$'))
 
   call delete('Xtest.scr')
-  call delete(swapfile_name)
 
   augroup test_swap_splitwin
       autocmd!
@@ -352,7 +342,7 @@
 func Test_swap_prompt_splitwin()
   CheckRunVimInTerminal
 
-  call writefile(['foo bar'], 'Xfile1')
+  call writefile(['foo bar'], 'Xfile1', 'D')
   edit Xfile1
   preserve  " should help to make sure the swap file exists
 
@@ -387,13 +377,12 @@
   call StopVimInTerminal(buf)
 
   %bwipe!
-  call delete('Xfile1')
 endfunc
 
 func Test_swap_symlink()
   CheckUnix
 
-  call writefile(['text'], 'Xtestfile')
+  call writefile(['text'], 'Xtestfile', 'D')
   silent !ln -s -f Xtestfile Xtestlink
 
   set dir=.
@@ -404,7 +393,7 @@
   call assert_match('Xtestfile\.swp$', s:swapname())
   bwipe!
 
-  call mkdir('Xswapdir')
+  call mkdir('Xswapdir', 'R')
   exe 'set dir=' . getcwd() . '/Xswapdir//'
 
   " Check that this also works when 'directory' ends with '//'
@@ -413,9 +402,7 @@
   bwipe!
 
   set dir&
-  call delete('Xtestfile')
   call delete('Xtestlink')
-  call delete('Xswapdir', 'rf')
 endfunc
 
 func s:get_unused_pid(base)
@@ -467,7 +454,7 @@
   " Change the process ID to avoid the "still running" warning.
   let swapfile_bytes[24:27] = s:pid_to_blob(s:get_unused_pid(
         \ s:blob_to_pid(swapfile_bytes[24:27])))
-  call writefile(swapfile_bytes, swapfile_name)
+  call writefile(swapfile_bytes, swapfile_name, 'D')
   edit Xtest.scr
   " will end up using the same swap file after deleting the existing one
   call assert_equal(swapfile_name, swapname('%'))
@@ -491,7 +478,6 @@
   bwipe!
 
   call delete('Xtest.scr')
-  call delete(swapfile_name)
   augroup test_swap_recover_ext
     autocmd!
   augroup END
@@ -520,13 +506,13 @@
 
 " Test for the v:swapchoice variable
 func Test_swapchoice()
-  call writefile(['aaa', 'bbb'], 'Xfile5')
+  call writefile(['aaa', 'bbb'], 'Xfile5', 'D')
   edit Xfile5
   preserve
   let swapfname = swapname('')
   let b = readblob(swapfname)
   bw!
-  call writefile(b, swapfname)
+  call writefile(b, swapfname, 'D')
 
   autocmd! SwapExists
 
@@ -565,7 +551,6 @@
   %bw!
   call assert_false(filereadable(swapfname))
 
-  call delete('Xfile5')
   call delete(swapfname)
   augroup test_swapchoice
     autocmd!
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index 7f1e5f0..73573ff 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -652,7 +652,7 @@
 	\ "\t}",
 	\ "\tNote: asdf",
 	\ '}',
-	\ ], 'Xtest.c')
+	\ ], 'Xtest.c', 'D')
 
   " This makes the default for 'background' use "dark", check that the
   " response to t_RB corrects it to "light".
@@ -670,7 +670,6 @@
   call StopVimInTerminal(buf)
 
   let $COLORFGBG = ''
-  call delete('Xtest.c')
 endfun
 
 " Test \z(...) along with \z1
@@ -704,10 +703,10 @@
 endfunc
 
 func Test_syntax_after_bufdo()
-  call writefile(['/* aaa comment */'], 'Xaaa.c')
-  call writefile(['/* bbb comment */'], 'Xbbb.c')
-  call writefile(['/* ccc comment */'], 'Xccc.c')
-  call writefile(['/* ddd comment */'], 'Xddd.c')
+  call writefile(['/* aaa comment */'], 'Xaaa.c', 'D')
+  call writefile(['/* bbb comment */'], 'Xbbb.c', 'D')
+  call writefile(['/* ccc comment */'], 'Xccc.c', 'D')
+  call writefile(['/* ddd comment */'], 'Xddd.c', 'D')
 
   let bnr = bufnr('%')
   new Xaaa.c
@@ -735,10 +734,6 @@
   bwipe! Xccc.c
   bwipe! Xddd.c
   syntax off
-  call delete('Xaaa.c')
-  call delete('Xbbb.c')
-  call delete('Xccc.c')
-  call delete('Xddd.c')
 endfunc
 
 func Test_syntax_foldlevel()
diff --git a/src/testdir/test_system.vim b/src/testdir/test_system.vim
index f238139..879eaed 100644
--- a/src/testdir/test_system.vim
+++ b/src/testdir/test_system.vim
@@ -55,7 +55,7 @@
     let cmd = ' -es -c "source Xscript" +q; echo "result=$?"'
     " Need to put this in a script, "catch" isn't found after an unknown
     " function.
-    call writefile(['try', 'call doesnotexist()', 'catch', 'endtry'], 'Xscript')
+    call writefile(['try', 'call doesnotexist()', 'catch', 'endtry'], 'Xscript', 'D')
     let a = system(GetVimCommand() . cmd)
     call assert_match('result=0', a)
     call assert_equal(0, v:shell_error)
@@ -71,7 +71,6 @@
   let cmd = ' -es -c "source Xscript" +q'
   let a = system(GetVimCommand() . cmd)
   call assert_notequal(0, v:shell_error)
-  call delete('Xscript')
 
   if has('unix') " echo $? only works on Unix
     let cmd = ' -es -c "call doesnotexist()" +q; echo $?'
diff --git a/src/version.c b/src/version.c
index ac3b567..fadd4a3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    719,
+/**/
     718,
 /**/
     717,
