test_delete.vim (4065B)
1 " Test for delete(). 2 3 source check.vim 4 source term_util.vim 5 source screendump.vim 6 7 func Test_file_delete() 8 split Xfdelfile 9 call setline(1, ['a', 'b']) 10 wq 11 call assert_equal(['a', 'b'], readfile('Xfdelfile')) 12 call assert_equal(0, delete('Xfdelfile')) 13 call assert_fails('call readfile("Xfdelfile")', 'E484:') 14 call assert_equal(-1, delete('Xfdelfile')) 15 bwipe Xfdelfile 16 endfunc 17 18 func Test_dir_delete() 19 call mkdir('Xdirdel') 20 call assert_true(isdirectory('Xdirdel')) 21 call assert_equal(0, delete('Xdirdel', 'd')) 22 call assert_false(isdirectory('Xdirdel')) 23 call assert_equal(-1, delete('Xdirdel', 'd')) 24 endfunc 25 26 func Test_recursive_delete() 27 call mkdir('Xrecdel') 28 call mkdir('Xrecdel/subdir') 29 call mkdir('Xrecdel/empty') 30 split Xrecdel/Xfile 31 call setline(1, ['a', 'b']) 32 w 33 w Xrecdel/subdir/Xfile 34 close 35 call assert_true(isdirectory('Xrecdel')) 36 call assert_equal(['a', 'b'], readfile('Xrecdel/Xfile')) 37 call assert_true(isdirectory('Xrecdel/subdir')) 38 call assert_equal(['a', 'b'], readfile('Xrecdel/subdir/Xfile')) 39 call assert_true('Xrecdel/empty'->isdirectory()) 40 call assert_equal(0, delete('Xrecdel', 'rf')) 41 call assert_false(isdirectory('Xrecdel')) 42 call assert_equal(-1, delete('Xrecdel', 'd')) 43 bwipe Xrecdel/Xfile 44 bwipe Xrecdel/subdir/Xfile 45 endfunc 46 47 func Test_symlink_delete() 48 CheckUnix 49 split Xslfile 50 call setline(1, ['a', 'b']) 51 wq 52 silent !ln -s Xslfile Xdellink 53 " Delete the link, not the file 54 call assert_equal(0, delete('Xdellink')) 55 call assert_equal(-1, delete('Xdellink')) 56 call assert_equal(0, delete('Xslfile')) 57 bwipe Xslfile 58 endfunc 59 60 func Test_symlink_dir_delete() 61 CheckUnix 62 call mkdir('Xsymdir') 63 silent !ln -s Xsymdir Xdirlink 64 call assert_true(isdirectory('Xsymdir')) 65 call assert_true(isdirectory('Xdirlink')) 66 " Delete the link, not the directory 67 call assert_equal(0, delete('Xdirlink')) 68 call assert_equal(-1, delete('Xdirlink')) 69 call assert_equal(0, delete('Xsymdir', 'd')) 70 endfunc 71 72 func Test_symlink_recursive_delete() 73 CheckUnix 74 call mkdir('Xrecdir3') 75 call mkdir('Xrecdir3/subdir') 76 call mkdir('Xrecdir4') 77 split Xrecdir3/Xfile 78 call setline(1, ['a', 'b']) 79 w 80 w Xrecdir3/subdir/Xfile 81 w Xrecdir4/Xfile 82 close 83 silent !ln -s ../Xrecdir4 Xrecdir3/Xreclink 84 85 call assert_true(isdirectory('Xrecdir3')) 86 call assert_equal(['a', 'b'], readfile('Xrecdir3/Xfile')) 87 call assert_true(isdirectory('Xrecdir3/subdir')) 88 call assert_equal(['a', 'b'], readfile('Xrecdir3/subdir/Xfile')) 89 call assert_true(isdirectory('Xrecdir4')) 90 call assert_true(isdirectory('Xrecdir3/Xreclink')) 91 call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile')) 92 93 call assert_equal(0, delete('Xrecdir3', 'rf')) 94 call assert_false(isdirectory('Xrecdir3')) 95 call assert_equal(-1, delete('Xrecdir3', 'd')) 96 " symlink is deleted, not the directory it points to 97 call assert_true(isdirectory('Xrecdir4')) 98 call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile')) 99 call assert_equal(0, delete('Xrecdir4/Xfile')) 100 call assert_equal(0, delete('Xrecdir4', 'd')) 101 102 bwipe Xrecdir3/Xfile 103 bwipe Xrecdir3/subdir/Xfile 104 bwipe Xrecdir4/Xfile 105 endfunc 106 107 func Test_delete_errors() 108 call assert_fails('call delete('''')', 'E474:') 109 call assert_fails('call delete(''foo'', 0)', 'E15:') 110 endfunc 111 112 " This should no longer trigger ml_get errors 113 func Test_delete_ml_get_errors() 114 CheckScreendump 115 CheckRunVimInTerminal 116 let lines =<< trim END 117 set noshowcmd noruler scrolloff=0 118 source samples/matchparen.vim 119 END 120 call writefile(lines, 'XDelete_ml_get_error', 'D') 121 let buf = RunVimInTerminal('-S XDelete_ml_get_error samples/box.txt', #{rows: 10, wait_for_ruler: 0}) 122 call TermWait(buf) 123 call term_sendkeys(buf, "249GV\<C-End>d") 124 call TermWait(buf) 125 " The following used to trigger ml_get errors 126 call term_sendkeys(buf, "\<PageUp>") 127 call TermWait(buf) 128 call term_sendkeys(buf, ":mess\<cr>") 129 call VerifyScreenDump(buf, 'Test_delete_ml_get_errors_1', {}) 130 call term_sendkeys(buf, ":q!\<cr>") 131 call StopVimInTerminal(buf) 132 endfunc 133 134 " vim: shiftwidth=2 sts=2 expandtab