blob: 6768e3154a6a604c8b066225c3bef017b0bed1f9 [file] [log] [blame]
Bram Moolenaar8cf91282017-06-13 19:38:37 +02001" Tests for the writefile() function.
Bram Moolenaar19a16692016-09-01 22:19:47 +02002
Bram Moolenaar8cf91282017-06-13 19:38:37 +02003func Test_writefile()
Bram Moolenaar19a16692016-09-01 22:19:47 +02004 let f = tempname()
5 call writefile(["over","written"], f, "b")
6 call writefile(["hello","world"], f, "b")
7 call writefile(["!", "good"], f, "a")
8 call writefile(["morning"], f, "ab")
9 call writefile(["", "vimmers"], f, "ab")
10 let l = readfile(f)
11 call assert_equal("hello", l[0])
12 call assert_equal("world!", l[1])
13 call assert_equal("good", l[2])
14 call assert_equal("morning", l[3])
15 call assert_equal("vimmers", l[4])
16 call delete(f)
Bram Moolenaar8cf91282017-06-13 19:38:37 +020017endfunc
18
19func Test_writefile_fails_gently()
20 call assert_fails('call writefile(["test"], "Xfile", [])', 'E730:')
21 call assert_false(filereadable("Xfile"))
22 call delete("Xfile")
23
24 call assert_fails('call writefile(["test", [], [], [], "tset"], "Xfile")', 'E730:')
25 call assert_false(filereadable("Xfile"))
26 call delete("Xfile")
27
28 call assert_fails('call writefile([], "Xfile", [])', 'E730:')
29 call assert_false(filereadable("Xfile"))
30 call delete("Xfile")
31
32 call assert_fails('call writefile([], [])', 'E730:')
33endfunc
Bram Moolenaare6bf6552017-06-27 22:11:51 +020034
35func Test_writefile_fails_conversion()
36 if !has('multi_byte') || !has('iconv')
37 return
38 endif
39 set nobackup nowritebackup
40 new
41 let contents = ["line one", "line two"]
42 call writefile(contents, 'Xfile')
43 edit Xfile
44 call setline(1, ["first line", "cannot convert \u010b", "third line"])
45 call assert_fails('write ++enc=cp932')
46 call assert_equal(contents, readfile('Xfile'))
47
48 call delete('Xfile')
49 bwipe!
50 set backup& writebackup&
51endfunc