diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim
index 556b859..ab0268d 100644
--- a/src/testdir/test_tabline.vim
+++ b/src/testdir/test_tabline.vim
@@ -154,10 +154,8 @@
       set mouse=a
       exe "norm \<LeftMouse>"
   END
-  call writefile(lines, 'Xclickscript')
+  call writefile(lines, 'Xclickscript', 'D')
   call RunVim([], [], "-e -s -S Xclickscript -c qa")
-
-  call delete('Xclickscript')
 endfunc
 
 
diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim
index ef265ed..e57a5dd 100644
--- a/src/testdir/test_tabpage.vim
+++ b/src/testdir/test_tabpage.vim
@@ -606,13 +606,12 @@
         \ 'echo "hello\nthere"',
         \ 'tabnext',
         \ 'redraw',
-	\ ], 'XTest_tabpage_cmdheight')
+	\ ], 'XTest_tabpage_cmdheight', 'D')
   " Check that cursor line is concealed
   let buf = RunVimInTerminal('-S XTest_tabpage_cmdheight', {'statusoff': 3})
   call VerifyScreenDump(buf, 'Test_tabpage_cmdheight', {})
 
   call StopVimInTerminal(buf)
-  call delete('XTest_tabpage_cmdheight')
 endfunc
 
 " Test for closing the tab page from a command window
diff --git a/src/testdir/test_tagcase.vim b/src/testdir/test_tagcase.vim
index 4eecf9f..f03a5fd 100644
--- a/src/testdir/test_tagcase.vim
+++ b/src/testdir/test_tagcase.vim
@@ -1,7 +1,7 @@
 " test 'tagcase' option
 
 func Test_tagcase()
-  call writefile(["Bar\tXtext\t3", "Foo\tXtext\t2", "foo\tXtext\t4"], 'Xtags')
+  call writefile(["Bar\tXtext\t3", "Foo\tXtext\t2", "foo\tXtext\t4"], 'Xtags', 'D')
   set tags=Xtags
   e Xtext
 
@@ -43,7 +43,6 @@
     endfor
   endfor
 
-  call delete('Xtags')
   set tags&
   set ic&
   setg tc&
diff --git a/src/testdir/test_tagfunc.vim b/src/testdir/test_tagfunc.vim
index 5b18976..4eb0f39 100644
--- a/src/testdir/test_tagfunc.vim
+++ b/src/testdir/test_tagfunc.vim
@@ -105,7 +105,7 @@
     return [{'name' : 'mytag', 'filename' : 'Xtest', 'cmd' : '1'}]
   endfunc
   set tagfunc=Mytagfunc1
-  call writefile([''], 'Xtest')
+  call writefile([''], 'Xtest', 'D')
   call assert_fails('tag xyz', 'E986:')
 
   func Mytagfunc2(pat, flags, info)
@@ -115,7 +115,6 @@
   set tagfunc=Mytagfunc2
   call assert_fails('tag xyz', 'E986:')
 
-  call delete('Xtest')
   set tagfunc&
   delfunc Mytagfunc1
   delfunc Mytagfunc2
diff --git a/src/testdir/test_tagjump.vim b/src/testdir/test_tagjump.vim
index 59537ee..5185b20 100644
--- a/src/testdir/test_tagjump.vim
+++ b/src/testdir/test_tagjump.vim
@@ -20,8 +20,8 @@
         \ "one\tXptfile\t1",
         \ "three\tXptfile\t3",
         \ "two\tXptfile\t2"],
-        \ 'Xpttags')
-  call writefile(['one', 'two', 'three'], 'Xptfile')
+        \ 'Xpttags', 'D')
+  call writefile(['one', 'two', 'three'], 'Xptfile', 'D')
 
   %bw!
   ptjump two
@@ -48,8 +48,6 @@
   call assert_equal(5, winheight(0))
   close
 
-  call delete('Xpttags')
-  call delete('Xptfile')
   set tags&
 endfunc
 
@@ -60,14 +58,13 @@
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "word\tfile1\tcmd1",
         \ "word\tfile2\tcmd2"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
 
   only!
   call feedkeys(":ptjump word\<CR>\<CR>", "xt")
   help
   call assert_equal(2, winnr('$'))
 
-  call delete('Xtags')
   set tags&
   quit
 endfunc
@@ -77,7 +74,7 @@
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "one\tXtjfile1\t/^one/;\"\tf\tfile:\tsignature:(void)",
         \ "word\tXtjfile2\tcmd2"],
-        \ 'Xtjtags')
+        \ 'Xtjtags', 'D')
   new Xtjfile1
   call setline(1, ['empty', 'one()', 'empty'])
   write
@@ -86,7 +83,6 @@
 
   bwipe!
   set tags&
-  call delete('Xtjtags')
   call delete('Xtjfile1')
 endfunc
 
@@ -97,7 +93,7 @@
         \ "thesame\tXdtfile1\t2;\"\td\tfile:",
         \ "thesame\tXdtfile1\t3;\"\td\tfile:",
         \ ],
-        \ 'Xdttags')
+        \ 'Xdttags', 'D')
   new Xdtfile1
   call setline(1, ['thesame one', 'thesame two', 'thesame three'])
   write
@@ -110,7 +106,6 @@
 
   bwipe!
   set tags&
-  call delete('Xdttags')
   call delete('Xdtfile1')
 endfunc
 
@@ -121,8 +116,8 @@
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "second\tXsbfile1\t2",
         \ "third\tXsbfile1\t3",],
-        \ 'Xswtags')
-  call writefile(['first', 'second', 'third'], 'Xsbfile1')
+        \ 'Xswtags', 'D')
+  call writefile(['first', 'second', 'third'], 'Xsbfile1', 'D')
 
   enew | only
   set switchbuf=
@@ -153,8 +148,6 @@
 
   tabclose!
   enew | only
-  call delete('Xsbfile1')
-  call delete('Xswtags')
   set tags&
   set switchbuf&vim
 endfunc
@@ -168,13 +161,13 @@
 	      \ "		test text",
 	      \ "		start OK if found this line",
 	      \ "	start found wrong line",
-	      \ "test text"], 'Xtestfile')
+	      \ "test text"], 'Xtestfile', 'D')
   call writefile(["/* test text test tex start here",
 	      \ "		some text",
 	      \ "		test text",
 	      \ "		start OK if found this line",
 	      \ "	start found wrong line",
-	      \ "test text"], 'Xinclude')
+	      \ "test text"], 'Xinclude', 'D')
   new Xtestfile
   call cursor(1,1)
   call search("start")
@@ -189,8 +182,6 @@
   call assert_fails('tag /\%(/', 'E426:')
 
   enew! | only
-  call delete('Xtestfile')
-  call delete('Xinclude')
 endfunction
 
 " Test for jumping to a tag with 'hidden' set, with symbolic link in path of
@@ -205,9 +196,9 @@
   call writefile([
         \ "SECTION_OFF	" . getcwd() . "/Xtest.dir/Xtest.c	/^#define  SECTION_OFF  3$/",
         \ '',
-        \ ], 'Xsymtags')
+        \ ], 'Xsymtags', 'D')
   call writefile(['#define  SECTION_OFF  3',
-        \ '#define  NUM_SECTIONS 3'], 'Xtest.c')
+        \ '#define  NUM_SECTIONS 3'], 'Xtest.c', 'D')
 
   " Try jumping to a tag, but with a path that contains a symbolic link.  When
   " wrong, this will give the ATTENTION message.  The next space will then be
@@ -223,8 +214,6 @@
   set hidden&
   set tags&
   enew!
-  call delete('Xsymtags')
-  call delete('Xtest.c')
   call delete("Xtest.dir", "rf")
   %bwipe!
 endfunc
@@ -243,13 +232,13 @@
   set encoding=utf8
 
   let content = ['text for tags1', 'abcdefghijklmnopqrs']
-  call writefile(content, 'Xtags1.txt')
+  call writefile(content, 'Xtags1.txt', 'D')
   let content = ['text for tags2', 'ＡＢＣ']
-  call writefile(content, 'Xtags2.txt')
+  call writefile(content, 'Xtags2.txt', 'D')
   let content = ['text for tags3', 'ＡＢＣ']
-  call writefile(content, 'Xtags3.txt')
+  call writefile(content, 'Xtags3.txt', 'D')
   let content = ['!_TAG_FILE_ENCODING	utf-8	//', 'abcdefghijklmnopqrs	Xtags1.txt	/abcdefghijklmnopqrs']
-  call writefile(content, 'Xtags1')
+  call writefile(content, 'Xtags1', 'D')
 
   " case1:
   new
@@ -280,20 +269,15 @@
       call add(contents, 'abc' .. i
             \ .. "	Xtags3.txt	/\x82`\x82a\x82b")
   endfor
-  call writefile(contents, 'Xenctags')
+  call writefile(contents, 'Xenctags', 'D')
   set tags=Xenctags
   tag abc50
   call assert_equal('Xtags3.txt', expand('%:t'))
   call assert_equal('ＡＢＣ', getline('.'))
-  call delete('Xenctags')
   close
 
   set tags&
   let &encoding = save_enc
-  call delete('Xtags1.txt')
-  call delete('Xtags2.txt')
-  call delete('Xtags3.txt')
-  call delete('Xtags1')
 endfunc
 
 " Test for emacs-style tags file (TAGS)
@@ -307,14 +291,14 @@
         \ "\tfoo();",
         \ "\treturn 0;",
         \ "}",
-        \ ], 'Xmain.c')
+        \ ], 'Xmain.c', 'D')
 
   call writefile([
 	\ "\x0c",
         \ "Xmain.c,64",
         \ "void foo() {}\x7ffoo\x011,0",
         \ "int main(int argc, char **argv)\x7fmain\x012,14",
-	\ ], 'Xtetags')
+	\ ], 'Xtetags', 'D')
   set tags=Xtetags
   ta foo
   call assert_equal('void foo() {}', getline('.'))
@@ -333,7 +317,7 @@
         \ "\x0c",
         \ "Xmain.c,64",
         \ "int main(int argc, char **argv)\x7fmain\x012,14",
-        \ ], 'Xtags2')
+        \ ], 'Xtags2', 'D')
   tag main
   call assert_equal(2, line('.'))
   call assert_fails('tag bar', 'E426:')
@@ -383,18 +367,15 @@
         \ ], 'Xtags2')
   call assert_fails('tag foo', 'E431:')
 
-  call delete('Xtetags')
-  call delete('Xtags2')
-  call delete('Xmain.c')
   set tags&
   bwipe!
 endfunc
 
 " Test for getting and modifying the tag stack
 func Test_getsettagstack()
-  call writefile(['line1', 'line2', 'line3'], 'Xstsfile1')
-  call writefile(['line1', 'line2', 'line3'], 'Xstsfile2')
-  call writefile(['line1', 'line2', 'line3'], 'Xstsfile3')
+  call writefile(['line1', 'line2', 'line3'], 'Xstsfile1', 'D')
+  call writefile(['line1', 'line2', 'line3'], 'Xstsfile2', 'D')
+  call writefile(['line1', 'line2', 'line3'], 'Xstsfile3', 'D')
 
   enew | only
   call settagstack(1, {'items' : []})
@@ -414,7 +395,7 @@
         \ "one\tXstsfile1\t1",
         \ "three\tXstsfile3\t3",
         \ "two\tXstsfile2\t2"],
-        \ 'Xtsttags')
+        \ 'Xtsttags', 'D')
 
   let stk = []
   call add(stk, {'bufnr' : bufnr('%'), 'tagname' : 'one',
@@ -515,28 +496,24 @@
   call assert_fails('call gettagstack()', 'E342:')
 
   call settagstack(1, {'items' : []})
-  call delete('Xstsfile1')
-  call delete('Xstsfile2')
-  call delete('Xstsfile3')
-  call delete('Xtsttags')
   set tags&
 endfunc
 
 func Test_tag_with_count()
   call writefile([
 	\ 'test	Xtest.h	/^void test();$/;"	p	typeref:typename:void	signature:()',
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   call writefile([
 	\ 'main	Xtest.c	/^int main()$/;"	f	typeref:typename:int	signature:()',
 	\ 'test	Xtest.c	/^void test()$/;"	f	typeref:typename:void	signature:()',
-	\ ], 'Ytags')
+	\ ], 'Ytags', 'D')
   cal writefile([
 	\ 'int main()',
 	\ 'void test()',
-	\ ], 'Xtest.c')
+	\ ], 'Xtest.c', 'D')
   cal writefile([
 	\ 'void test();',
-	\ ], 'Xtest.h')
+	\ ], 'Xtest.h', 'D')
   set tags=Xtags,Ytags
 
   new Xtest.c
@@ -552,12 +529,8 @@
   call assert_equal(bufname('%'), 'Xtest.h')
 
   set tags&
-  call delete('Xtags')
-  call delete('Ytags')
   bwipe Xtest.h
   bwipe Xtest.c
-  call delete('Xtest.h')
-  call delete('Xtest.c')
 endfunc
 
 func Test_tagnr_recall()
@@ -565,14 +538,14 @@
 	\ 'test	Xtest.h	/^void test();$/;"	p',
 	\ 'main	Xtest.c	/^int main()$/;"	f',
 	\ 'test	Xtest.c	/^void test()$/;"	f',
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   cal writefile([
 	\ 'int main()',
 	\ 'void test()',
-	\ ], 'Xtest.c')
+	\ ], 'Xtest.c', 'D')
   cal writefile([
 	\ 'void test();',
-	\ ], 'Xtest.h')
+	\ ], 'Xtest.h', 'D')
   set tags=Xtags
 
   new Xtest.c
@@ -588,17 +561,14 @@
   call assert_equal(bufname('%'), 'Xtest.h')
 
   set tags&
-  call delete('Xtags')
   bwipe Xtest.h
   bwipe Xtest.c
-  call delete('Xtest.h')
-  call delete('Xtest.c')
 endfunc
 
 func Test_tag_line_toolong()
   call writefile([
 	\ '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678	django/contrib/admin/templates/admin/edit_inline/stacked.html	16;"	j	line:16	language:HTML'
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   set tags=Xtags
   let old_vbs = &verbose
   set verbose=5
@@ -635,7 +605,7 @@
         \ 'two',
         \ 'trhee',
         \ 'four',
-        \ ], 'Xsomewhere')
+        \ ], 'Xsomewhere', 'D')
   tag foobar
   call assert_equal('Xsomewhere', expand('%'))
   call assert_equal(3, getcurpos()[1])
@@ -650,8 +620,6 @@
   " Should not crash
   call assert_true(v:true)
 
-  call delete('Xtags')
-  call delete('Xsomewhere')
   set tags&
   let &verbose = old_vbs
 endfunc
@@ -665,16 +633,16 @@
 	\ 'main	Xtest.h	/^void test();$/;"	f',
 	\ 'main	Xtest.c	/^int main()$/;"	f',
 	\ 'main	Xtest.x	/^void test()$/;"	f',
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   cal writefile([
 	\ 'int main()',
 	\ 'void test()',
-	\ ], 'Xtest.c')
+	\ ], 'Xtest.c', 'D')
 
   let lines =<< trim [SCRIPT]
     set tags=Xtags
   [SCRIPT]
-  call writefile(lines, 'XTest_tselect')
+  call writefile(lines, 'XTest_tselect', 'D')
   let buf = RunVimInTerminal('-S XTest_tselect', {'rows': 10, 'cols': 50})
 
   call TermWait(buf, 50)
@@ -682,22 +650,19 @@
   call VerifyScreenDump(buf, 'Test_tselect_1', {})
 
   call StopVimInTerminal(buf)
-  call delete('Xtags')
-  call delete('Xtest.c')
-  call delete('XTest_tselect')
 endfunc
 
 func Test_tagline()
   call writefile([
 	\ 'provision	Xtest.py	/^    def provision(self, **kwargs):$/;"	m	line:1	language:Python class:Foo',
 	\ 'provision	Xtest.py	/^    def provision(self, **kwargs):$/;"	m	line:3	language:Python class:Bar',
-	\], 'Xtags')
+	\], 'Xtags', 'D')
   call writefile([
 	\ '    def provision(self, **kwargs):',
 	\ '        pass',
 	\ '    def provision(self, **kwargs):',
 	\ '        pass',
-	\], 'Xtest.py')
+	\], 'Xtest.py', 'D')
 
   set tags=Xtags
 
@@ -706,14 +671,12 @@
   2tag provision
   call assert_equal(line('.'), 3)
 
-  call delete('Xtags')
-  call delete('Xtest.py')
   set tags&
 endfunc
 
 " Test for expanding environment variable in a tag file name
 func Test_tag_envvar()
-  call writefile(["Func1\t$FOO\t/^Func1/"], 'Xtags')
+  call writefile(["Func1\t$FOO\t/^Func1/"], 'Xtags', 'D')
   set tags=Xtags
 
   let $FOO='TagTestEnv'
@@ -728,7 +691,6 @@
   call assert_true(caught_exception)
 
   set tags&
-  call delete('Xtags')
   unlet $FOO
 endfunc
 
@@ -737,9 +699,9 @@
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "second\tXtpfile1\t2",
         \ "third\tXtpfile1\t3",],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
-  call writefile(['first', 'second', 'third'], 'Xtpfile1')
+  call writefile(['first', 'second', 'third'], 'Xtpfile1', 'D')
 
   enew | only
   ptag third
@@ -766,8 +728,6 @@
   pclose
   call assert_equal(1, winnr('$'))
 
-  call delete('Xtpfile1')
-  call delete('Xtags')
   set tags&
 endfunc
 
@@ -778,7 +738,7 @@
         \ "func2\tXfoo\t/^int func2(int y)/",
         \ "func3\tXfoo\t/^func3/",
         \ "func4\tXfoo\t/^func4/"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
 
@@ -788,7 +748,7 @@
     int * func3 () { }
 
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   let v:statusmsg = ''
   ta func1
@@ -804,8 +764,6 @@
   call assert_equal(5, line('.'))
   call assert_fails('ta func4', 'E434:')
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
 endfunc
 
@@ -815,26 +773,23 @@
         \ "first\tXfoo\t1",
         \ "ten\tXfoo\t3",
         \ "six\tXfoo\t2"]
-  call writefile(l, 'Xtags')
+  call writefile(l, 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int six() {}
     int ten() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   call assert_fails('tag first', 'E432:')
 
   " When multiple tag files are not sorted, then message should be displayed
   " multiple times
-  call writefile(l, 'Xtags2')
+  call writefile(l, 'Xtags2', 'D')
   set tags=Xtags,Xtags2
   call assert_fails('tag first', ['E432:', 'E432:'])
 
-  call delete('Xtags')
-  call delete('Xtags2')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -847,22 +802,20 @@
         \ "first\tXfoo\t1",
         \ "second\tXfoo\t2",
         \ "third\tXfoo\t3"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int second() {}
     int third() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   enew
   tag second
   call assert_equal('Xfoo', bufname(''))
   call assert_equal(2, line('.'))
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -874,14 +827,14 @@
         \ "first\tXfoo\t1",
         \ "second\tXfoo\t/^int second() {}$/",
         \ "third\tXfoo\t3"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int second() {}
     int third() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   enew
   call setloclist(0, [], 'f')
@@ -899,8 +852,6 @@
         \ 'valid': 1, 'vcol': 0, 'nr': 0, 'type': '', 'module': '',
         \ 'text': 'second'}], getloclist(0))
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -913,14 +864,14 @@
         \ "first\tXfoo\t/^int first() {}/",
         \ "second\tXfoo\t/^int second() {}/",
         \ "third\tXfoo\t/^int third() {}/"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int second() {}
     int third() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   enew
   let save_cpo = &cpo
@@ -930,8 +881,6 @@
   call assert_equal('^int second() {}', @/)
   let &cpo = save_cpo
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -942,14 +891,14 @@
   for i in range(10, 31)
     let l += ["var" .. i .. "\tXfoo\t/^int var" .. i .. ";$/"]
   endfor
-  call writefile(l, 'Xtags')
+  call writefile(l, 'Xtags', 'D')
   set tags=Xtags
 
   let l = []
   for i in range(10, 31)
     let l += ["int var" .. i .. ";"]
   endfor
-  call writefile(l, 'Xfoo')
+  call writefile(l, 'Xfoo', 'D')
 
   " Jump to a tag when the tag stack is full. Oldest entry should be removed.
   enew
@@ -994,8 +943,6 @@
   call settagstack(1, {'items' : []})
   call assert_fails('pop', 'E73:')
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -1007,14 +954,14 @@
         \ "first\tXfoo\t1",
         \ "first\tXfoo\t2",
         \ "first\tXfoo\t3"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int first() {}
     int first() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   call settagstack(1, {'items' : []})
   tag first
@@ -1041,8 +988,6 @@
   call assert_equal(1, line('.'))
   set ignorecase&
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -1054,14 +999,14 @@
         \ "first\tXfoo\t1",
         \ "first\tXfoo\t2",
         \ "first\tXfoo\t3"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int first() {}
     int first() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   enew | only
   ptag first
@@ -1091,8 +1036,6 @@
 
   pclose
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -1104,14 +1047,14 @@
         \ "first\tXfoo1\t1",
         \ "first\tXfoo2\t1",
         \ "first\tXfoo3\t1"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
   [CODE]
-  call writefile(code, 'Xfoo1')
-  call writefile(code, 'Xfoo2')
-  call writefile(code, 'Xfoo3')
+  call writefile(code, 'Xfoo1', 'D')
+  call writefile(code, 'Xfoo2', 'D')
+  call writefile(code, 'Xfoo3', 'D')
 
   tag first
   tag first
@@ -1120,10 +1063,6 @@
   tnext
   call assert_fails('tnext', 'E428:')
 
-  call delete('Xtags')
-  call delete('Xfoo1')
-  call delete('Xfoo2')
-  call delete('Xfoo3')
   set tags&
   %bwipe
 endfunc
@@ -1135,14 +1074,13 @@
         \ "first\tXfoo1\t1",
         \ "first\tXfoo2\t1",
         \ "first\tXfoo3\t1"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
 
   call settagstack(1, {'items' : []})
   call assert_fails('tag first', 'E429:')
   call assert_equal(3, gettagstack().items[0].matchnr)
 
-  call delete('Xtags')
   set tags&
   %bwipe
 endfunc
@@ -1152,14 +1090,14 @@
         \ "!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "first\tXfoo\t1" .. ';"' .. "\tv\ttyperef:typename:int\tfile:",
         \ "first\tXfoo\t2" .. ';"' .. "\tkind:v\ttyperef:typename:char\tfile:"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
 
   let code =<< trim [CODE]
     static int first;
     static char first;
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   call feedkeys("\<CR>", "t")
   let l = split(execute("tselect first"), "\n")
@@ -1175,8 +1113,6 @@
 [DATA]
   call assert_equal(expected, l)
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags&
   %bwipe
 endfunc
@@ -1454,9 +1390,9 @@
   set tags=Xtags
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
         \ "tame\tXtlfile1\t1;",
-        \ "tape\tXtlfile2\t1;"], 'Xtags')
-  call writefile(['tame'], 'Xtlfile1')
-  call writefile(['tape'], 'Xtlfile2')
+        \ "tape\tXtlfile2\t1;"], 'Xtags', 'D')
+  call writefile(['tame'], 'Xtlfile1', 'D')
+  call writefile(['tape'], 'Xtlfile2', 'D')
 
   " Jumping to the tag 'tape', should instead jump to 'tame'
   new
@@ -1468,9 +1404,6 @@
   tag /^tape$
   call assert_equal('Xtlfile2', @%)
 
-  call delete('Xtags')
-  call delete('Xtlfile1')
-  call delete('Xtlfile2')
   set tags& taglength&
 endfunc
 
@@ -1480,8 +1413,8 @@
 
   " missing search pattern or line number for a tag
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
-        \ "foo\tXfile\t"], 'Xtags', 'b')
-  call writefile(['foo'], 'Xfile')
+        \ "foo\tXfile\t"], 'Xtags', 'bD')
+  call writefile(['foo'], 'Xfile', 'D')
 
   enew
   tag foo
@@ -1504,8 +1437,6 @@
         \ "foo\tXfile 1;"], 'Xtags')
   call assert_fails('tag foo', 'E431:')
 
-  call delete('Xtags')
-  call delete('Xfile')
   set tags&
 endfunc
 
@@ -1514,9 +1445,9 @@
   new | only
   set tags=Xtags
   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
-        \ "foo\tXfile\t1"], 'Xtags')
-  call writefile(['foo'], 'Xfile')
-  call writefile([], '.Xfile.swp')
+        \ "foo\tXfile\t1"], 'Xtags', 'D')
+  call writefile(['foo'], 'Xfile', 'D')
+  call writefile([], '.Xfile.swp', 'D')
   " Remove the catch-all that runtest.vim adds
   au! SwapExists
   augroup StagTest
@@ -1531,8 +1462,6 @@
   augroup StagTest
     au!
   augroup END
-  call delete('Xfile')
-  call delete('.Xfile.swp')
   set tags&
 endfunc
 
@@ -1546,14 +1475,14 @@
         \ "third\tXfoo\t3",
         \ "second\tXfoo\t2",
         \ "first\tXfoo\t1"],
-        \ 'Xtags')
+        \ 'Xtags', 'D')
   set tags=Xtags
   let code =<< trim [CODE]
     int first() {}
     int second() {}
     int third() {}
   [CODE]
-  call writefile(code, 'Xfoo')
+  call writefile(code, 'Xfoo', 'D')
 
   enew
   set tagbsearch
@@ -1613,8 +1542,6 @@
         \ 'Xtags')
   call assert_fails('tag bbb', 'E426:')
 
-  call delete('Xtags')
-  call delete('Xfoo')
   set tags& tagbsearch&
 endfunc
 
diff --git a/src/testdir/test_taglist.vim b/src/testdir/test_taglist.vim
index 23ef107..39e78bc 100644
--- a/src/testdir/test_taglist.vim
+++ b/src/testdir/test_taglist.vim
@@ -12,7 +12,7 @@
 	\ "Kindly\tXbar\t3;\"\tv\tfile:",
 	\ "Lambda\tXbar\t3;\"\tλ\tfile:",
 	\ "Command\tXbar\tcall cursor(3, 4)|;\"\td",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   set tags=Xtags
   split Xtext
 
@@ -40,12 +40,11 @@
   " Use characters with value > 127 in the tag extra field.
   call writefile([
 	\ "vFoo\tXfoo\t4" .. ';"' .. "\ttypename:int\ta£££\tv",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   call assert_equal('v', taglist('vFoo')[0].kind)
 
   call assert_fails("let l=taglist([])", 'E730:')
 
-  call delete('Xtags')
   set tags&
   bwipe
 endfunc
@@ -58,14 +57,13 @@
 	\ "src/os_unix.c,13491",
 	\ "set_signals(\x7f1335,32699",
 	\ "reset_signals(\x7f1407,34136",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
 
   set tags=Xtags
 
   call assert_equal([['set_signals', '1335,32699'], ['reset_signals', '1407,34136']],
 	\ map(taglist('set_signals'), {i, v -> [v.name, v.cmd]}))
 
-  call delete('Xtags')
   set tags&
 endfunc
 
@@ -77,14 +75,13 @@
 	\ "src/os_unix.c,13491",
 	\ "set_signals(void)\x7fset_signals\x011335,32699",
 	\ "reset_signals(void)\x7freset_signals\x011407,34136",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
 
   set tags=Xtags
 
   call assert_equal([['set_signals', '1335,32699'], ['reset_signals', '1407,34136']],
 	\ map(taglist('set_signals'), {i, v -> [v.name, v.cmd]}))
 
-  call delete('Xtags')
   set tags&
 endfunc
 
@@ -96,8 +93,8 @@
 func Test_tagfiles()
   call assert_equal([], tagfiles())
 
-  call writefile(["FFoo\tXfoo\t1"], 'Xtags1')
-  call writefile(["FBar\tXbar\t1"], 'Xtags2')
+  call writefile(["FFoo\tXfoo\t1"], 'Xtags1', 'D')
+  call writefile(["FBar\tXbar\t1"], 'Xtags2', 'D')
   set tags=Xtags1,Xtags2
   call assert_equal(['Xtags1', 'Xtags2'], tagfiles())
 
@@ -111,22 +108,19 @@
   set tags&
   call assert_equal([], tagfiles())
 
-  call delete('Xtags1')
-  call delete('Xtags2')
   bd
 endfunc
 
 " For historical reasons we support a tags file where the last line is missing
 " the newline.
 func Test_tagsfile_without_trailing_newline()
-  call writefile(["Foo\tfoo\t1"], 'Xtags', 'b')
+  call writefile(["Foo\tfoo\t1"], 'Xtags', 'bD')
   set tags=Xtags
 
   let tl = taglist('.*')
   call assert_equal(1, len(tl))
   call assert_equal('Foo', tl[0].name)
 
-  call delete('Xtags')
   set tags&
 endfunc
 
@@ -136,7 +130,7 @@
 	\ "!_TAG_PROGRAM_NAME	/Test tags generator/",
 	\ "FBar\tXfoo\t2" .. ';"' .. "\textrafield\tf",
 	\ "!_TAG_FILE_FORMAT	2	/extended format/",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   set tags=Xtags
 
   let l = taglist('.*')
@@ -144,7 +138,6 @@
   call assert_equal('FBar', l[0].name)
 
   set tags&
-  call delete('Xtags')
 endfunc
 
 " Test for using an excmd in a tags file to position the cursor (instead of a
@@ -152,7 +145,7 @@
 func Test_tagfile_excmd()
   call writefile([
 	\ "vFoo\tXfoo\tcall cursor(3, 4)" .. '|;"' .. "\tv",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   set tags=Xtags
 
   let l = taglist('.*')
@@ -164,14 +157,13 @@
 	      \ 'filename' : 'Xfoo'}], l)
 
   set tags&
-  call delete('Xtags')
 endfunc
 
 " Test for duplicate fields in a tag in a tags file
 func Test_duplicate_field()
   call writefile([
 	\ "vFoo\tXfoo\t4" .. ';"' .. "\ttypename:int\ttypename:int\tv",
-	\ ], 'Xtags')
+	\ ], 'Xtags', 'D')
   set tags=Xtags
 
   let l = taglist('.*')
@@ -184,14 +176,13 @@
 	      \ 'filename' : 'Xfoo'}], l)
 
   set tags&
-  call delete('Xtags')
 endfunc
 
 " Test for tag address with ;
 func Test_tag_addr_with_semicolon()
   call writefile([
 	      \ "Func1\tXfoo\t6;/^Func1/" .. ';"' .. "\tf"
-	      \ ], 'Xtags')
+	      \ ], 'Xtags', 'D')
   set tags=Xtags
 
   let l = taglist('.*')
@@ -203,12 +194,11 @@
 	      \ 'filename' : 'Xfoo'}], l)
 
   set tags&
-  call delete('Xtags')
 endfunc
 
 " Test for format error in a tags file
 func Test_format_error()
-  call writefile(['vFoo-Xfoo-4'], 'Xtags')
+  call writefile(['vFoo-Xfoo-4'], 'Xtags', 'D')
   set tags=Xtags
 
   let caught_exception = v:false
@@ -228,12 +218,11 @@
   call assert_fails("echo taglist('foo')", 'E431:')
 
   set tags&
-  call delete('Xtags')
 endfunc
 
 " Test for :tag command completion with 'wildoptions' set to 'tagfile'
 func Test_tag_complete_wildoptions()
-  call writefile(["foo\ta.c\t10;\"\tf", "bar\tb.c\t20;\"\td"], 'Xtags')
+  call writefile(["foo\ta.c\t10;\"\tf", "bar\tb.c\t20;\"\td"], 'Xtags', 'D')
   set tags=Xtags
   set wildoptions=tagfile
 
@@ -242,7 +231,6 @@
 
   call assert_equal('"tag bar d b.c : foo f a.c', @:)
 
-  call delete('Xtags')
   set wildoptions&
   set tags&
 endfunc
@@ -256,7 +244,7 @@
       inboundGovernor	a	2;"	kind:⊢	type:forall (muxMode :: MuxMode) socket peerAddr versionNumber m a b. (MonadAsync m, MonadCatch m, MonadEvaluate m, MonadThrow m, MonadThrow (STM m), MonadTime m, MonadTimer m, MonadMask m, Ord peerAddr, HasResponder muxMode ~ True) => Tracer m (RemoteTransitionTrace peerAddr) -> Tracer m (InboundGovernorTrace peerAddr) -> ServerControlChannel muxMode peerAddr ByteString m a b -> DiffTime -> MuxConnectionManager muxMode socket peerAddr versionNumber ByteString m a b -> StrictTVar m InboundGovernorObservableState -> m Void
       inboundGovernorCounters	a	3;"	kind:⊢	type:InboundGovernorState muxMode peerAddr m a b -> InboundGovernorCounters
   END
-  call writefile(tagslines, 'Xtags')
+  call writefile(tagslines, 'Xtags', 'D')
   set tags=Xtags
 
   " try with binary search
@@ -269,7 +257,6 @@
   call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:)
   set tagbsearch&
 
-  call delete('Xtags')
   set tags&
 endfunc
 
diff --git a/src/testdir/test_tcl.vim b/src/testdir/test_tcl.vim
index bfd7013..4c6537f 100644
--- a/src/testdir/test_tcl.vim
+++ b/src/testdir/test_tcl.vim
@@ -684,25 +684,22 @@
 " Test :tclfile
 func Test_tclfile()
   call delete('Xtcl_file')
-  call writefile(['set pi [format "%.2f" [expr acos(-1.0)]]'], 'Xtcl_file')
+  call writefile(['set pi [format "%.2f" [expr acos(-1.0)]]'], 'Xtcl_file', 'D')
   call setfperm('Xtcl_file', 'r-xr-xr-x')
 
   tclfile Xtcl_file
   call assert_equal('3.14', TclEval('set pi'))
 
   tcl unset pi
-  call delete('Xtcl_file')
 endfunc
 
 " Test :tclfile with syntax error in tcl script
 func Test_tclfile_error()
   call delete('Xtcl_file')
-  call writefile(['xyz'], 'Xtcl_file')
+  call writefile(['xyz'], 'Xtcl_file', 'D')
   call setfperm('Xtcl_file', 'r-xr-xr-x')
 
   call assert_fails('tclfile Xtcl_file', 'invalid command name "xyz"')
-
-  call delete('Xtcl_file')
 endfunc
 
 " Test exiting current Tcl interpreter and re-creating one.
diff --git a/src/testdir/test_termencoding.vim b/src/testdir/test_termencoding.vim
index a1b604f..de812ce 100644
--- a/src/testdir/test_termencoding.vim
+++ b/src/testdir/test_termencoding.vim
@@ -26,14 +26,13 @@
 	\ 'scriptencoding utf-8',
 	\ 'exe "normal aE83: バッファを作成できないので、他のを使用します...\<Esc>"',
 	\ 'split Xeuc_jp.txt',
-	\ ], 'XTest_tenc_euc_jp')
+	\ ], 'XTest_tenc_euc_jp', 'D')
   let buf = RunVimInTerminal('-S XTest_tenc_euc_jp', {'rows': 10})
   call VerifyScreenDump(buf, 'Test_tenc_euc_jp_01', {})
 
   " clean up
   call StopVimInTerminal(buf)
   call delete('Xeuc_jp.txt')
-  call delete('XTest_tenc_euc_jp')
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index d0ffe3b..b0c29ec 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -405,7 +405,7 @@
 endfunc
 
 func Test_terminal_scrape_multibyte()
-  call writefile(["léttまrs"], 'Xtext')
+  call writefile(["léttまrs"], 'Xtext', 'D')
   if has('win32')
     " Run cmd with UTF-8 codepage to make the type command print the expected
     " multibyte characters.
@@ -436,7 +436,6 @@
   call TermWait(buf)
 
   exe buf . 'bwipe'
-  call delete('Xtext')
 endfunc
 
 func Test_terminal_one_column()
@@ -455,7 +454,7 @@
 endfunc
 
 func Test_terminal_scroll()
-  call writefile(range(1, 200), 'Xtext')
+  call writefile(range(1, 200), 'Xtext', 'D')
   if has('win32')
     let cmd = 'cmd /c "type Xtext"'
   else
@@ -484,13 +483,12 @@
   call assert_equal('200', term_getline(buf, 200 - scrolled))
 
   exe buf . 'bwipe'
-  call delete('Xtext')
 endfunc
 
 func Test_terminal_scrollback()
   let buf = Run_shell_in_terminal({'term_rows': 15})
   set termwinscroll=100
-  call writefile(range(150), 'Xtext')
+  call writefile(range(150), 'Xtext', 'D')
   if has('win32')
     call term_sendkeys(buf, "type Xtext\<CR>")
   else
@@ -505,14 +503,13 @@
   call StopShellInTerminal(buf)
   exe buf . 'bwipe'
   set termwinscroll&
-  call delete('Xtext')
 endfunc
 
 func Test_terminal_postponed_scrollback()
   " tail -f only works on Unix
   CheckUnix
 
-  call writefile(range(50), 'Xtext')
+  call writefile(range(50), 'Xtext', 'D')
   call writefile([
 	\ 'set shell=/bin/sh noruler',
 	\ 'terminal',
@@ -520,7 +517,7 @@
 	\ 'call feedkeys("tail -n 100 -f Xtext\<CR>", "xt")',
 	\ 'sleep 100m',
 	\ 'call feedkeys("\<C-W>N", "xt")',
-	\ ], 'XTest_postponed')
+	\ ], 'XTest_postponed', 'D')
   let buf = RunVimInTerminal('-S XTest_postponed', {})
   " Check that the Xtext lines are displayed and in Terminal-Normal mode
   call VerifyScreenDump(buf, 'Test_terminal_scrollback_1', {})
@@ -547,8 +544,6 @@
   echo type(tsk_ret)
 
   call StopVimInTerminal(buf)
-  call delete('XTest_postponed')
-  call delete('Xtext')
 endfunc
 
 " Run diff on two dumps with different size.
@@ -783,10 +778,9 @@
 func Test_terminal_cwd_failure()
   " Case 1: Provided directory is not actually a directory.  Attempt to make
   " the file executable as well.
-  call writefile([], 'Xtcfile')
+  call writefile([], 'Xtcfile', 'D')
   call setfperm('Xtcfile', 'rwx------')
   call assert_fails("call term_start(&shell, {'cwd': 'Xtcfile'})", 'E475:')
-  call delete('Xtcfile')
 
   " Case 2: Directory does not exist.
   call assert_fails("call term_start(&shell, {'cwd': 'Xdir'})", 'E475:')
@@ -989,14 +983,13 @@
   " this file name only works on Unix
   CheckUnix
 
-  call mkdir('Xdir with spaces')
+  call mkdir('Xdir with spaces', 'R')
   call writefile(['x'], 'Xdir with spaces/quoted"file')
   term ls Xdir\ with\ spaces/quoted\"file
   call WaitForAssert({-> assert_match('quoted"file', term_getline('', 1))})
   " make sure the job has finished
   call WaitForAssert({-> assert_match('finish', term_getstatus(bufnr()))})
 
-  call delete('Xdir with spaces', 'rf')
   bwipe
 endfunc
 
@@ -1040,14 +1033,13 @@
   bwipe
 
   if has('unix')
-    call writefile(['one line'], 'Xtrfile')
+    call writefile(['one line'], 'Xtrfile', 'D')
     let buf = term_start('cat', {'in_io': 'file', 'in_name': 'Xtrfile'})
     call TermWait(buf)
     call WaitForAssert({-> assert_equal('one line', term_getline(buf, 1))})
     let g:job = term_getjob(buf)
     call WaitForAssert({-> assert_equal('dead', job_status(g:job))})
     bwipe
-    call delete('Xtrfile')
   endif
 endfunc
 
@@ -1279,7 +1271,7 @@
       au FocusLost * call setline(1, 'I am lost') | set nomod
       au FocusGained * call setline(1, 'I am back') | set nomod
   END
-  call writefile(lines, 'XtermFocus')
+  call writefile(lines, 'XtermFocus', 'D')
   let buf = RunVimInTerminal('-S XtermFocus', #{rows: 6})
 
   " Send a focus event to ourselves, it should be forwarded to the terminal
@@ -1297,7 +1289,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('XtermFocus')
   let &term = save_term
   let &ttymouse = save_ttymouse
 endfunc
@@ -1399,7 +1390,7 @@
      close
      call win_gotoid(termid)
   END
-  call writefile(lines, 'XtermExit')
+  call writefile(lines, 'XtermExit', 'D')
   let buf = RunVimInTerminal('-S XtermExit', #{rows: 10})
   let job = term_getjob(buf)
   call WaitForAssert({-> assert_equal("run", job_status(job))})
@@ -1407,8 +1398,6 @@
   " quit the shell, it will make Vim exit
   call term_sendkeys(buf, "exit\<CR>")
   call WaitForAssert({-> assert_equal("dead", job_status(job))})
-
-  call delete('XtermExit')
 endfunc
 
 func Test_terminal_open_autocmd()
@@ -1455,7 +1444,7 @@
       set incsearch
       cnoremap <F3> <Cmd>call term_start(['/bin/sh', '-c', ':'])<CR>
   END
-  call writefile(lines, 'Xopenterm')
+  call writefile(lines, 'Xopenterm', 'D')
   let buf = RunVimInTerminal('-S Xopenterm', {})
 
   " this opens a window, incsearch should not use the old cursor position
@@ -1465,18 +1454,17 @@
   call term_sendkeys(buf, ":q\<CR>")
 
   call StopVimInTerminal(buf)
-  call delete('Xopenterm')
 endfunc
 
 func Test_combining_double_width()
   CheckUnix
   CheckRunVimInTerminal
 
-  call writefile(["\xe3\x83\x9b\xe3\x82\x9a"], 'Xonedouble')
+  call writefile(["\xe3\x83\x9b\xe3\x82\x9a"], 'Xonedouble', 'D')
   let lines =<< trim END
       call term_start(['/bin/sh', '-c', 'cat Xonedouble'])
   END
-  call writefile(lines, 'Xcombining')
+  call writefile(lines, 'Xcombining', 'D')
   let buf = RunVimInTerminal('-S Xcombining', #{rows: 9})
 
   " this opens a window, incsearch should not use the old cursor position
@@ -1484,8 +1472,6 @@
   call term_sendkeys(buf, ":q\<CR>")
 
   call StopVimInTerminal(buf)
-  call delete('Xonedouble')
-  call delete('Xcombining')
 endfunc
 
 func Test_terminal_popup_with_cmd()
@@ -1531,7 +1517,7 @@
 
       call term_sendkeys(termbuf, "echo 'test'")
   END
-  call writefile(lines, 'XpopupScript')
+  call writefile(lines, 'XpopupScript', 'D')
   let buf = RunVimInTerminal('-S XpopupScript', {})
 
   " typed text appears both in normal window and in popup
@@ -1542,7 +1528,6 @@
   call TermWait(buf)
   call term_sendkeys(buf, ":q\<CR>")
   call StopVimInTerminal(buf)
-  call delete('XpopupScript')
 endfunc
 
 func Test_terminal_popup_insert_cmd()
@@ -1576,7 +1561,7 @@
   call assert_equal(1, winnr('$'))
 
   let text = " a\u0300 e\u0302 o\u0308"
-  call writefile([text], 'Xcomposing')
+  call writefile([text], 'Xcomposing', 'D')
   let buf = RunVimInTerminal('--cmd "set encoding=utf-8" Xcomposing', {})
   call WaitForAssert({-> assert_match(text, term_getline(buf, 1))})
   eval 'Xdump'->term_dumpwrite(buf)
@@ -1584,7 +1569,6 @@
   call assert_match('|à| |ê| |ö', dumpline)
 
   call StopVimInTerminal(buf)
-  call delete('Xcomposing')
   call delete('Xdump')
   let &encoding = save_enc
 endfunc
@@ -1647,12 +1631,11 @@
   let lines =<< trim END
      call term_dumpload('dumps/Test_popupwin_22.dump', #{term_rows: 12})
   END
-  call writefile(lines, 'XtermDumpload')
+  call writefile(lines, 'XtermDumpload', 'D')
   let buf = RunVimInTerminal('-S XtermDumpload', #{rows: 15})
   call VerifyScreenDump(buf, 'Test_terminal_dumpload', {})
 
   call StopVimInTerminal(buf)
-  call delete('XtermDumpload')
 endfunc
 
 func Test_terminal_dumpdiff()
@@ -1667,9 +1650,8 @@
 
   call assert_fails('call term_dumpdiff("X1.dump", [])', 'E730:')
   call assert_fails('call term_dumpdiff("X1.dump", "X2.dump")', 'E485:')
-  call writefile([], 'X1.dump')
+  call writefile([], 'X1.dump', 'D')
   call assert_fails('call term_dumpdiff("X1.dump", "X2.dump")', 'E485:')
-  call delete('X1.dump')
 endfunc
 
 func Test_terminal_dumpdiff_swap()
@@ -1766,7 +1748,7 @@
   CheckFeature timers
 
   " Open a terminal window from a timer, typed text goes to the terminal
-  call writefile(["call timer_start(100, { -> term_start('sh') })"], 'XtimerTerm')
+  call writefile(["call timer_start(100, { -> term_start('sh') })"], 'XtimerTerm', 'D')
   let buf = RunVimInTerminal('-S XtimerTerm', {})
   call CheckTerminalWindowWorks(buf)
 
@@ -1775,7 +1757,6 @@
   call CheckTerminalWindowWorks(buf)
 
   call StopVimInTerminal(buf)
-  call delete('XtimerTerm')
 endfunc
 
 func Test_terminal_window_focus()
@@ -1923,13 +1904,12 @@
 	\ 'let &titlestring = ''["drop","Xtextfile"]''',
 	\ 'redraw',
 	\ "set t_ts=",
-	\ ], 'Xscript')
+	\ ], 'Xscript', 'D')
   let buf = RunVimInTerminal('-S Xscript', {'rows': 10})
   call WaitForAssert({-> assert_equal('Xtextfile', expand('%:t'))})
   call assert_equal(textfile_winid, win_getid())
 
   call StopVimInTerminal(buf)
-  call delete('Xscript')
   bwipe Xtextfile
 endfunc
 
@@ -2261,13 +2241,12 @@
 	\ 'call  matchadd("TgreenBold", "Y")',
 	\ 'call  matchadd("TmagentaBold", "Z")',
 	\ 'redraw',
-	\ ], 'Xcolorscript')
+	\ ], 'Xcolorscript', 'D')
   let buf = RunVimInTerminal('-S Xcolorscript', {'rows': 10})
   call VerifyScreenDump(buf, 'Test_terminal_all_ansi_colors', {})
 
   call term_sendkeys(buf, ":q\<CR>")
   call StopVimInTerminal(buf)
-  call delete('Xcolorscript')
 endfunc
 
 function On_BufFilePost()
diff --git a/src/testdir/test_terminal2.vim b/src/testdir/test_terminal2.vim
index 6e70ad6..c6acb99 100644
--- a/src/testdir/test_terminal2.vim
+++ b/src/testdir/test_terminal2.vim
@@ -19,7 +19,7 @@
   for n in range(10)
     call add(text, repeat(n, 50))
   endfor
-  call writefile(text, 'Xwinsize')
+  call writefile(text, 'Xwinsize', 'D')
   let buf = RunVimInTerminal('Xwinsize', {})
   let win = bufwinid(buf)
   call assert_equal([6, 40], term_getsize(buf))
@@ -34,7 +34,6 @@
   call assert_equal(60, winwidth(win))
 
   call StopVimInTerminal(buf)
-  call delete('Xwinsize')
 
   call assert_fails('set termwinsize=40', 'E474:')
   call assert_fails('set termwinsize=10+40', 'E474:')
@@ -192,7 +191,7 @@
 	\ '#!/bin/sh',
 	\ 'echo "this is standard error" >&2',
 	\ 'echo "this is standard out" >&1',
-	\ ], 'Xechoerrout.sh')
+	\ ], 'Xechoerrout.sh', 'D')
   call setfperm('Xechoerrout.sh', 'rwxrwx---')
 
   let outfile = 'Xtermstdout'
@@ -204,7 +203,6 @@
 
   call WaitForAssert({-> assert_equal('dead', job_status(term_getjob(buf)))})
   exe buf . 'bwipe'
-  call delete('Xechoerrout.sh')
   call delete(outfile)
 endfunc
 
@@ -290,36 +288,34 @@
   unlet g:job
 endfunc
 
-" TODO: re-enable when this no longer hangs on Travis
-"func Test_zz2_terminal_guioptions_bang()
-"  CheckGui
-"  set guioptions+=!
-"
-"  let filename = 'Xtestscript'
-"  if has('win32')
-"    let filename .= '.bat'
-"    let prefix = ''
-"    let contents = ['@echo off', 'exit %1']
-"  else
-"    let filename .= '.sh'
-"    let prefix = './'
-"    let contents = ['#!/bin/sh', 'exit $1']
-"  endif
-"  call writefile(contents, filename)
-"  call setfperm(filename, 'rwxrwx---')
-"
-"  " Check if v:shell_error is equal to the exit status.
-"  let exitval = 0
-"  execute printf(':!%s%s %d', prefix, filename, exitval)
-"  call assert_equal(exitval, v:shell_error)
-"
-"  let exitval = 9
-"  execute printf(':!%s%s %d', prefix, filename, exitval)
-"  call assert_equal(exitval, v:shell_error)
-"
-"  set guioptions&
-"  call delete(filename)
-"endfunc
+func Test_zz2_terminal_guioptions_bang()
+  CheckGui
+  set guioptions+=!
+
+  let filename = 'Xtestscript'
+  if has('win32')
+    let filename .= '.bat'
+    let prefix = ''
+    let contents = ['@echo off', 'exit %1']
+  else
+    let filename .= '.sh'
+    let prefix = './'
+    let contents = ['#!/bin/sh', 'exit $1']
+  endif
+  call writefile(contents, filename, 'D')
+  call setfperm(filename, 'rwxrwx---')
+
+  " Check if v:shell_error is equal to the exit status.
+  let exitval = 0
+  execute printf(':!%s%s %d', prefix, filename, exitval)
+  call assert_equal(exitval, v:shell_error)
+
+  let exitval = 9
+  execute printf(':!%s%s %d', prefix, filename, exitval)
+  call assert_equal(exitval, v:shell_error)
+
+  set guioptions&
+endfunc
 
 func Test_terminal_hidden()
   CheckUnix
@@ -372,7 +368,7 @@
     call setline(1, range(11111, 11122))
     3
   END
-  call writefile(lines, 'XtermNormal')
+  call writefile(lines, 'XtermNormal', 'D')
   let buf = RunVimInTerminal('-S XtermNormal', {'rows': 8})
   call TermWait(buf)
 
@@ -389,7 +385,6 @@
   call assert_fails('call term_sendkeys(buf, [])', 'E730:')
   call term_sendkeys(buf, "a:q!\<CR>:q\<CR>:q\<CR>")
   call StopVimInTerminal(buf)
-  call delete('XtermNormal')
 endfunc
 
 func Test_terminal_hidden_and_close()
@@ -415,7 +410,7 @@
   \ ]
 
   for c in contents
-    call writefile(c, 'Xdntfile')
+    call writefile(c, 'Xdntfile', 'D')
     if has('win32')
       term cmd /c type Xdntfile
     else
@@ -428,8 +423,6 @@
     call assert_equal(c, getline(1, line('$')))
     quit
   endfor
-
-  call delete('Xdntfile')
 endfunc
 
 func GetDummyCmd()
diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim
index b798e9a..5b14371 100644
--- a/src/testdir/test_terminal3.vim
+++ b/src/testdir/test_terminal3.vim
@@ -18,7 +18,7 @@
   let cmd = "cat Xtext\<CR>"
 
   let buf = term_start(&shell, {})
-  call writefile(["\<Esc>[?1047h"], 'Xtext')
+  call writefile(["\<Esc>[?1047h"], 'Xtext', 'D')
   call term_sendkeys(buf, cmd)
   call WaitForAssert({-> assert_equal(1, term_getaltscreen(buf))})
 
@@ -28,7 +28,6 @@
 
   call term_sendkeys(buf, "exit\r")
   exe buf . "bwipe!"
-  call delete('Xtext')
 endfunc
 
 func Test_terminal_shell_option()
@@ -79,7 +78,7 @@
 	\ ] + a:open_cmds + [
 	\ 'endfunc',
 	\ ] + a:highlight_cmds
-  call writefile(lines, 'XtermStart')
+  call writefile(lines, 'XtermStart', 'D')
   let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
   call TermWait(buf, 100)
   call term_sendkeys(buf, ":call OpenTerm()\<CR>")
@@ -90,7 +89,6 @@
   call term_sendkeys(buf, "\<C-D>")
   call TermWait(buf, 50)
   call StopVimInTerminal(buf)
-  call delete('XtermStart')
 endfunc
 
 func Test_terminal_color_Terminal()
@@ -143,7 +141,7 @@
   \ 'highlight MyWinCol ctermfg=red ctermbg=darkyellow',
   \ 'highlight MyWinCol2 ctermfg=black ctermbg=blue',
 	\ ]
-  call writefile(lines, 'XtermStart')
+  call writefile(lines, 'XtermStart', 'D')
   let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
   call TermWait(buf, 100)
   call term_sendkeys(buf, ":call OpenTerm()\<CR>")
@@ -162,7 +160,6 @@
   call term_sendkeys(buf, "\<C-D>")
   call TermWait(buf, 50)
   call StopVimInTerminal(buf)
-  call delete('XtermStart')
 endfunc
 
 func Test_terminal_color_transp_Terminal()
@@ -245,7 +242,7 @@
     to edit
     in a popup window
   END
-  call writefile(text, 'Xtext')
+  call writefile(text, 'Xtext', 'D')
   let cmd = GetVimCommandCleanTerm()
   let lines = [
 	\ 'call setline(1, range(20))',
@@ -268,7 +265,7 @@
 	\ '  call popup_create(s:buf, #{minwidth: 40, minheight: 6, border: []})',
 	\ 'endfunc',
 	\ ]
-  call writefile(lines, 'XtermPopup')
+  call writefile(lines, 'XtermPopup', 'D')
   let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
   call TermWait(buf, 100)
   call term_sendkeys(buf, ":call OpenTerm(0)\<CR>")
@@ -312,8 +309,6 @@
   call TermWait(buf, 250)  " wait for terminal to vanish
 
   call StopVimInTerminal(buf)
-  call delete('Xtext')
-  call delete('XtermPopup')
 endfunc
 
 " Check a terminal in popup window uses the default minimum size.
@@ -325,7 +320,7 @@
     to show
     in a popup window
   END
-  call writefile(text, 'Xtext')
+  call writefile(text, 'Xtext', 'D')
   let lines = [
 	\ 'call setline(1, range(20))',
 	\ 'func OpenTerm()',
@@ -333,7 +328,7 @@
 	\ '  let g:winid = popup_create(s:buf, #{ border: []})',
 	\ 'endfunc',
 	\ ]
-  call writefile(lines, 'XtermPopup')
+  call writefile(lines, 'XtermPopup', 'D')
   let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
   call TermWait(buf, 100)
   call term_sendkeys(buf, ":set noruler\<CR>")
@@ -346,8 +341,6 @@
   call term_sendkeys(buf, ":q\<CR>")
   call TermWait(buf, 50)  " wait for terminal to vanish
   call StopVimInTerminal(buf)
-  call delete('Xtext')
-  call delete('XtermPopup')
 endfunc
 
 " Check a terminal in popup window with different colors
@@ -365,7 +358,7 @@
   \ ] + a:popup_cmds + [
 	\ 'endfunc',
 	\ ] + a:highlight_cmds
-  call writefile(lines, 'XtermPopup')
+  call writefile(lines, 'XtermPopup', 'D')
   let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
   call TermWait(buf, 100)
   call term_sendkeys(buf, ":set noruler\<CR>")
@@ -379,7 +372,6 @@
   call term_sendkeys(buf, ":q\<CR>")
   call TermWait(buf, 50)  " wait for terminal to vanish
   call StopVimInTerminal(buf)
-  call delete('XtermPopup')
 endfunc
 
 func Test_terminal_in_popup_color_Terminal()
@@ -582,7 +574,7 @@
      term
      startinsert
   EOL
-  call writefile(lines, 'XTest_startinsert')
+  call writefile(lines, 'XTest_startinsert', 'D')
   let buf = RunVimInTerminal('-S XTest_startinsert', {})
 
   call term_sendkeys(buf, "exit\r")
@@ -592,7 +584,6 @@
   call WaitForAssert({-> assert_equal("some text<", term_getline(buf, 1))})
 
   call StopVimInTerminal(buf)
-  call delete('XTest_startinsert')
 endfunc
 
 " Test for passing invalid arguments to terminal functions
@@ -683,7 +674,7 @@
     red green yellow red blue
     vim emacs sublime nano
   END
-  call writefile(lines, 'Xtest_mouse')
+  call writefile(lines, 'Xtest_mouse', 'D')
 
   " Create a terminal window running Vim for the test with mouse enabled
   let prev_win = win_getid()
@@ -783,7 +774,6 @@
   let &ttymouse = save_ttymouse
   let &clipboard = save_clipboard
   set mousetime&
-  call delete('Xtest_mouse')
   call delete('Xbuf')
 endfunc
 
@@ -836,7 +826,7 @@
     red green yellow red blue
     vim emacs sublime nano
   END
-  call writefile(lines, 'Xtest_modeless')
+  call writefile(lines, 'Xtest_modeless', 'D')
 
   " Create a terminal window running Vim for the test with mouse disabled
   let prev_win = win_getid()
@@ -869,7 +859,6 @@
   let &term = save_term
   let &ttymouse = save_ttymouse
   set mousetime& clipboard&
-  call delete('Xtest_modeless')
   new | only!
 endfunc
 
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim
index 1b996c5..8e6d7f9 100644
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -371,12 +371,12 @@
         \ '  normal 3j',
         \ 'endfunc',
         \ 'call timer_start(100, "Doit")',
-	\ ], 'Xtrcscript')
+	\ ], 'Xtrcscript', 'D')
   call writefile([
         \ '1-1234',
         \ '2-1234',
         \ '3-1234',
-	\ ], 'Xtrctext')
+	\ ], 'Xtrctext', 'D')
   let buf = RunVimInTerminal('-S Xtrcscript Xtrctext', {})
 
   " Wait for the timer to move the cursor to the third line.
@@ -387,8 +387,6 @@
   call WaitForAssert({-> assert_equal(2, term_getcursor(buf)[1])})
 
   call StopVimInTerminal(buf)
-  call delete('Xtrcscript')
-  call delete('Xtrctext')
 endfunc
 
 " Test that the garbage collector isn't triggered if a timer callback invokes
@@ -438,7 +436,7 @@
   set updatetime=50
   call timer_start(1, 'Func')
   [CODE]
-  call writefile(lines, 'Xtest.vim')
+  call writefile(lines, 'Xtest.vim', 'D')
 
   let buf = term_start(GetVimCommandCleanTerm() .. ' -S Xtest.vim', {'term_rows': 8})
   let job = term_getjob(buf)
@@ -456,7 +454,6 @@
     call assert_equal('', job_info(job).termsig)
   endif
 
-  call delete('Xtest.vim')
   exe buf .. 'bwipe!'
 endfunc
 
@@ -485,7 +482,7 @@
     endfor
     au CmdlineLeave : call timer_start(0, {-> 0})
   END
-  call writefile(lines, 'XTest_timerchange')
+  call writefile(lines, 'XTest_timerchange', 'D')
   let buf = RunVimInTerminal('-S XTest_timerchange', #{rows: 10})
   call term_sendkeys(buf, ":fu\<CR>")
   call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 10))})
@@ -494,7 +491,6 @@
   call term_sendkeys(buf, "\<Esc>")
 
   call StopVimInTerminal(buf)
-  call delete('XTest_timerchange')
 endfunc
 
 func Test_timer_outputting_message()
@@ -508,7 +504,7 @@
             echon repeat('x', &columns - 11)
         })
   END
-  call writefile(lines, 'XTest_timermessage')
+  call writefile(lines, 'XTest_timermessage', 'D')
   let buf = RunVimInTerminal('-S XTest_timermessage', #{rows: 6})
   call term_sendkeys(buf, "l")
   call term_wait(buf)
@@ -516,7 +512,6 @@
   call WaitForAssert({-> assert_match('xxxxxxxxxxx', term_getline(buf, 6))})
 
   call StopVimInTerminal(buf)
-  call delete('XTest_timermessage')
 endfunc
 
 func Test_timer_using_win_execute_undo_sync()
diff --git a/src/testdir/test_trycatch.vim b/src/testdir/test_trycatch.vim
index 28cd39f..9d62084 100644
--- a/src/testdir/test_trycatch.vim
+++ b/src/testdir/test_trycatch.vim
@@ -1975,7 +1975,7 @@
 endfunc
 
 func Test_reload_in_try_catch()
-  call writefile(['x'], 'Xreload')
+  call writefile(['x'], 'Xreload', 'D')
   set autoread
   edit Xreload
   tabnew
@@ -1995,7 +1995,6 @@
   autocmd! ReLoad
   set noautoread
   bwipe! Xreload
-  call delete('Xreload')
 endfunc
 
 " Test for errors with :catch, :throw, :finally                            {{{1
@@ -2306,10 +2305,8 @@
       call s:main()
       call assert_equal('yes', s:caught)
   END
-  call writefile(lines, 'XtestThrow')
+  call writefile(lines, 'XtestThrow', 'D')
   source XtestThrow
-
-  call delete('XtestThrow')
 endfunc
 
 func ThisWillFail()
@@ -2325,13 +2322,11 @@
       for l in []
     finally
   END
-  call writefile(lines, 'XtestCatchAndFinally')
+  call writefile(lines, 'XtestCatchAndFinally', 'D')
   try
     source XtestCatchAndFinally
   catch /E600:/
   endtry
-
-  call delete('XtestCatchAndFinally')
 endfunc
 
 " This was causing an illegal memory access
@@ -2345,13 +2340,11 @@
       if
       endtry
   END
-  call writefile(lines, 'XtestEndtry')
+  call writefile(lines, 'XtestEndtry', 'D')
   try
     source XtestEndtry
   catch /E171:/
   endtry
-
-  call delete('XtestEndtry')
 endfunc
 
 " Modeline								    {{{1
diff --git a/src/version.c b/src/version.c
index ee6c70f..997aad3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    767,
+/**/
     766,
 /**/
     765,
