blob: c00b8ca47df762dcfec1e9f594dc82c1bb4438ee [file] [log] [blame]
Bram Moolenaarda440d22016-01-16 21:27:23 +01001" Test for delete().
2
Bram Moolenaaraeb313f2020-11-27 19:13:28 +01003source check.vim
Christian Brabandtc4ffedd2023-11-27 23:25:03 +01004source term_util.vim
5source screendump.vim
Bram Moolenaaraeb313f2020-11-27 19:13:28 +01006
Bram Moolenaarda440d22016-01-16 21:27:23 +01007func Test_file_delete()
Bram Moolenaar61abe7d2022-08-30 21:46:08 +01008 split Xfdelfile
Bram Moolenaarda440d22016-01-16 21:27:23 +01009 call setline(1, ['a', 'b'])
10 wq
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010011 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
Bram Moolenaarda440d22016-01-16 21:27:23 +010016endfunc
17
18func Test_dir_delete()
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010019 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'))
Bram Moolenaarda440d22016-01-16 21:27:23 +010024endfunc
25
26func Test_recursive_delete()
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010027 call mkdir('Xrecdel')
28 call mkdir('Xrecdel/subdir')
29 call mkdir('Xrecdel/empty')
30 split Xrecdel/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010031 call setline(1, ['a', 'b'])
32 w
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010033 w Xrecdel/subdir/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010034 close
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010035 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
Bram Moolenaarda440d22016-01-16 21:27:23 +010045endfunc
Bram Moolenaar43a34f92016-01-17 15:56:34 +010046
47func Test_symlink_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010048 CheckUnix
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010049 split Xslfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010050 call setline(1, ['a', 'b'])
51 wq
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010052 silent !ln -s Xslfile Xdellink
Bram Moolenaar43a34f92016-01-17 15:56:34 +010053 " Delete the link, not the file
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010054 call assert_equal(0, delete('Xdellink'))
55 call assert_equal(-1, delete('Xdellink'))
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010056 call assert_equal(0, delete('Xslfile'))
57 bwipe Xslfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010058endfunc
59
60func Test_symlink_dir_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010061 CheckUnix
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010062 call mkdir('Xsymdir')
63 silent !ln -s Xsymdir Xdirlink
64 call assert_true(isdirectory('Xsymdir'))
65 call assert_true(isdirectory('Xdirlink'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010066 " Delete the link, not the directory
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010067 call assert_equal(0, delete('Xdirlink'))
68 call assert_equal(-1, delete('Xdirlink'))
69 call assert_equal(0, delete('Xsymdir', 'd'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010070endfunc
71
72func Test_symlink_recursive_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010073 CheckUnix
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010074 call mkdir('Xrecdir3')
75 call mkdir('Xrecdir3/subdir')
76 call mkdir('Xrecdir4')
77 split Xrecdir3/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010078 call setline(1, ['a', 'b'])
79 w
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010080 w Xrecdir3/subdir/Xfile
81 w Xrecdir4/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010082 close
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010083 silent !ln -s ../Xrecdir4 Xrecdir3/Xreclink
Bram Moolenaar43a34f92016-01-17 15:56:34 +010084
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010085 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'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010092
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010093 call assert_equal(0, delete('Xrecdir3', 'rf'))
94 call assert_false(isdirectory('Xrecdir3'))
95 call assert_equal(-1, delete('Xrecdir3', 'd'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010096 " symlink is deleted, not the directory it points to
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010097 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'))
Bram Moolenaar4520d442017-03-19 16:09:46 +0100101
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +0100102 bwipe Xrecdir3/Xfile
103 bwipe Xrecdir3/subdir/Xfile
104 bwipe Xrecdir4/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +0100105endfunc
Bram Moolenaar17aca702019-05-16 22:24:55 +0200106
107func Test_delete_errors()
108 call assert_fails('call delete('''')', 'E474:')
109 call assert_fails('call delete(''foo'', 0)', 'E15:')
110endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200111
Christian Brabandtc4ffedd2023-11-27 23:25:03 +0100112" This should no longer trigger ml_get errors
113func Test_delete_ml_get_errors()
114 CheckRunVimInTerminal
115 let lines =<< trim END
116 set noshowcmd noruler scrolloff=0
117 source samples/matchparen.vim
118 END
119 call writefile(lines, 'XDelete_ml_get_error', 'D')
120 let buf = RunVimInTerminal('-S XDelete_ml_get_error samples/box.txt', #{rows: 10, wait_for_ruler: 0})
121 call TermWait(buf)
122 call term_sendkeys(buf, "249GV\<C-End>d")
123 call TermWait(buf)
124 " The following used to trigger ml_get errors
125 call term_sendkeys(buf, "\<PageUp>")
126 call TermWait(buf)
127 call term_sendkeys(buf, ":mess\<cr>")
128 call VerifyScreenDump(buf, 'Test_delete_ml_get_errors_1', {})
129 call term_sendkeys(buf, ":q!\<cr>")
130 call StopVimInTerminal(buf)
131endfunc
132
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200133" vim: shiftwidth=2 sts=2 expandtab