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 34e6bf655bSBram Moolenaar 35e6bf655bSBram Moolenaarfunc Test_writefile_fails_conversion() 36e6bf655bSBram Moolenaar if !has('multi_byte') || !has('iconv') 37e6bf655bSBram Moolenaar return 38e6bf655bSBram Moolenaar endif 39e6bf655bSBram Moolenaar set nobackup nowritebackup 40e6bf655bSBram Moolenaar new 41e6bf655bSBram Moolenaar let contents = ["line one", "line two"] 42e6bf655bSBram Moolenaar call writefile(contents, 'Xfile') 43e6bf655bSBram Moolenaar edit Xfile 44e6bf655bSBram Moolenaar call setline(1, ["first line", "cannot convert \u010b", "third line"]) 45e6bf655bSBram Moolenaar call assert_fails('write ++enc=cp932') 46e6bf655bSBram Moolenaar call assert_equal(contents, readfile('Xfile')) 47e6bf655bSBram Moolenaar 48e6bf655bSBram Moolenaar call delete('Xfile') 49e6bf655bSBram Moolenaar bwipe! 50e6bf655bSBram Moolenaar set backup& writebackup& 51e6bf655bSBram Moolenaarendfunc 52*2c33d7bbSBram Moolenaar 53*2c33d7bbSBram Moolenaarfunc SetFlag(timer) 54*2c33d7bbSBram Moolenaar let g:flag = 1 55*2c33d7bbSBram Moolenaarendfunc 56*2c33d7bbSBram Moolenaar 57*2c33d7bbSBram Moolenaarfunc Test_write_quit_split() 58*2c33d7bbSBram Moolenaar " Prevent exiting by splitting window on file write. 59*2c33d7bbSBram Moolenaar augroup testgroup 60*2c33d7bbSBram Moolenaar autocmd BufWritePre * split 61*2c33d7bbSBram Moolenaar augroup END 62*2c33d7bbSBram Moolenaar e! Xfile 63*2c33d7bbSBram Moolenaar call setline(1, 'nothing') 64*2c33d7bbSBram Moolenaar wq 65*2c33d7bbSBram Moolenaar 66*2c33d7bbSBram Moolenaar if has('timers') 67*2c33d7bbSBram Moolenaar " timer will not run if "exiting" is still set 68*2c33d7bbSBram Moolenaar let g:flag = 0 69*2c33d7bbSBram Moolenaar call timer_start(1, 'SetFlag') 70*2c33d7bbSBram Moolenaar sleep 50m 71*2c33d7bbSBram Moolenaar call assert_equal(1, g:flag) 72*2c33d7bbSBram Moolenaar unlet g:flag 73*2c33d7bbSBram Moolenaar endif 74*2c33d7bbSBram Moolenaar au! testgroup 75*2c33d7bbSBram Moolenaar bwipe Xfile 76*2c33d7bbSBram Moolenaar call delete('Xfile') 77*2c33d7bbSBram Moolenaarendfunc 78*2c33d7bbSBram Moolenaar 79*2c33d7bbSBram Moolenaarfunc Test_nowrite_quit_split() 80*2c33d7bbSBram Moolenaar " Prevent exiting by opening a help window. 81*2c33d7bbSBram Moolenaar e! Xfile 82*2c33d7bbSBram Moolenaar help 83*2c33d7bbSBram Moolenaar wincmd w 84*2c33d7bbSBram Moolenaar exe winnr() . 'q' 85*2c33d7bbSBram Moolenaar 86*2c33d7bbSBram Moolenaar if has('timers') 87*2c33d7bbSBram Moolenaar " timer will not run if "exiting" is still set 88*2c33d7bbSBram Moolenaar let g:flag = 0 89*2c33d7bbSBram Moolenaar call timer_start(1, 'SetFlag') 90*2c33d7bbSBram Moolenaar sleep 50m 91*2c33d7bbSBram Moolenaar call assert_equal(1, g:flag) 92*2c33d7bbSBram Moolenaar unlet g:flag 93*2c33d7bbSBram Moolenaar endif 94*2c33d7bbSBram Moolenaar bwipe Xfile 95*2c33d7bbSBram Moolenaarendfunc 96