18cf91286SBram Moolenaar" Tests for the writefile() function.
219a1669fSBram Moolenaar
38cf91286SBram Moolenaarfunc Test_writefile()
419a1669fSBram Moolenaar  let f = tempname()
519a1669fSBram Moolenaar  call writefile(["over","written"], f, "b")
619a1669fSBram Moolenaar  call writefile(["hello","world"], f, "b")
719a1669fSBram Moolenaar  call writefile(["!", "good"], f, "a")
819a1669fSBram Moolenaar  call writefile(["morning"], f, "ab")
919a1669fSBram Moolenaar  call writefile(["", "vimmers"], f, "ab")
1019a1669fSBram Moolenaar  let l = readfile(f)
1119a1669fSBram Moolenaar  call assert_equal("hello", l[0])
1219a1669fSBram Moolenaar  call assert_equal("world!", l[1])
1319a1669fSBram Moolenaar  call assert_equal("good", l[2])
1419a1669fSBram Moolenaar  call assert_equal("morning", l[3])
1519a1669fSBram Moolenaar  call assert_equal("vimmers", l[4])
1619a1669fSBram Moolenaar  call delete(f)
178cf91286SBram Moolenaarendfunc
188cf91286SBram Moolenaar
198cf91286SBram Moolenaarfunc Test_writefile_fails_gently()
208cf91286SBram Moolenaar  call assert_fails('call writefile(["test"], "Xfile", [])', 'E730:')
218cf91286SBram Moolenaar  call assert_false(filereadable("Xfile"))
228cf91286SBram Moolenaar  call delete("Xfile")
238cf91286SBram Moolenaar
248cf91286SBram Moolenaar  call assert_fails('call writefile(["test", [], [], [], "tset"], "Xfile")', 'E730:')
258cf91286SBram Moolenaar  call assert_false(filereadable("Xfile"))
268cf91286SBram Moolenaar  call delete("Xfile")
278cf91286SBram Moolenaar
288cf91286SBram Moolenaar  call assert_fails('call writefile([], "Xfile", [])', 'E730:')
298cf91286SBram Moolenaar  call assert_false(filereadable("Xfile"))
308cf91286SBram Moolenaar  call delete("Xfile")
318cf91286SBram Moolenaar
328cf91286SBram Moolenaar  call assert_fails('call writefile([], [])', 'E730:')
338cf91286SBram Moolenaarendfunc
34*e6bf655bSBram Moolenaar
35*e6bf655bSBram Moolenaarfunc Test_writefile_fails_conversion()
36*e6bf655bSBram Moolenaar  if !has('multi_byte') || !has('iconv')
37*e6bf655bSBram Moolenaar    return
38*e6bf655bSBram Moolenaar  endif
39*e6bf655bSBram Moolenaar  set nobackup nowritebackup
40*e6bf655bSBram Moolenaar  new
41*e6bf655bSBram Moolenaar  let contents = ["line one", "line two"]
42*e6bf655bSBram Moolenaar  call writefile(contents, 'Xfile')
43*e6bf655bSBram Moolenaar  edit Xfile
44*e6bf655bSBram Moolenaar  call setline(1, ["first line", "cannot convert \u010b", "third line"])
45*e6bf655bSBram Moolenaar  call assert_fails('write ++enc=cp932')
46*e6bf655bSBram Moolenaar  call assert_equal(contents, readfile('Xfile'))
47*e6bf655bSBram Moolenaar
48*e6bf655bSBram Moolenaar  call delete('Xfile')
49*e6bf655bSBram Moolenaar  bwipe!
50*e6bf655bSBram Moolenaar  set backup& writebackup&
51*e6bf655bSBram Moolenaarendfunc
52