blob: 63e83d3b77252746c62263cd41732fbac6065296 [file] [log] [blame]
Bram Moolenaarda440d22016-01-16 21:27:23 +01001" Test for delete().
2
Christian Brabandteb380b92025-07-07 20:53:55 +02003source util/screendump.vim
Bram Moolenaaraeb313f2020-11-27 19:13:28 +01004
Bram Moolenaarda440d22016-01-16 21:27:23 +01005func Test_file_delete()
Bram Moolenaar61abe7d2022-08-30 21:46:08 +01006 split Xfdelfile
Bram Moolenaarda440d22016-01-16 21:27:23 +01007 call setline(1, ['a', 'b'])
8 wq
Bram Moolenaar61abe7d2022-08-30 21:46:08 +01009 call assert_equal(['a', 'b'], readfile('Xfdelfile'))
10 call assert_equal(0, delete('Xfdelfile'))
11 call assert_fails('call readfile("Xfdelfile")', 'E484:')
12 call assert_equal(-1, delete('Xfdelfile'))
13 bwipe Xfdelfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010014endfunc
15
16func Test_dir_delete()
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010017 call mkdir('Xdirdel')
18 call assert_true(isdirectory('Xdirdel'))
19 call assert_equal(0, delete('Xdirdel', 'd'))
20 call assert_false(isdirectory('Xdirdel'))
21 call assert_equal(-1, delete('Xdirdel', 'd'))
Bram Moolenaarda440d22016-01-16 21:27:23 +010022endfunc
23
24func Test_recursive_delete()
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010025 call mkdir('Xrecdel')
26 call mkdir('Xrecdel/subdir')
27 call mkdir('Xrecdel/empty')
28 split Xrecdel/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010029 call setline(1, ['a', 'b'])
30 w
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010031 w Xrecdel/subdir/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010032 close
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010033 call assert_true(isdirectory('Xrecdel'))
34 call assert_equal(['a', 'b'], readfile('Xrecdel/Xfile'))
35 call assert_true(isdirectory('Xrecdel/subdir'))
36 call assert_equal(['a', 'b'], readfile('Xrecdel/subdir/Xfile'))
37 call assert_true('Xrecdel/empty'->isdirectory())
38 call assert_equal(0, delete('Xrecdel', 'rf'))
39 call assert_false(isdirectory('Xrecdel'))
40 call assert_equal(-1, delete('Xrecdel', 'd'))
41 bwipe Xrecdel/Xfile
42 bwipe Xrecdel/subdir/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010043endfunc
Bram Moolenaar43a34f92016-01-17 15:56:34 +010044
45func Test_symlink_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010046 CheckUnix
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010047 split Xslfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010048 call setline(1, ['a', 'b'])
49 wq
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010050 silent !ln -s Xslfile Xdellink
Bram Moolenaar43a34f92016-01-17 15:56:34 +010051 " Delete the link, not the file
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010052 call assert_equal(0, delete('Xdellink'))
53 call assert_equal(-1, delete('Xdellink'))
Bram Moolenaar61abe7d2022-08-30 21:46:08 +010054 call assert_equal(0, delete('Xslfile'))
55 bwipe Xslfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010056endfunc
57
58func Test_symlink_dir_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010059 CheckUnix
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010060 call mkdir('Xsymdir')
61 silent !ln -s Xsymdir Xdirlink
62 call assert_true(isdirectory('Xsymdir'))
63 call assert_true(isdirectory('Xdirlink'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010064 " Delete the link, not the directory
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010065 call assert_equal(0, delete('Xdirlink'))
66 call assert_equal(-1, delete('Xdirlink'))
67 call assert_equal(0, delete('Xsymdir', 'd'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010068endfunc
69
70func Test_symlink_recursive_delete()
Bram Moolenaaraeb313f2020-11-27 19:13:28 +010071 CheckUnix
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010072 call mkdir('Xrecdir3')
73 call mkdir('Xrecdir3/subdir')
74 call mkdir('Xrecdir4')
75 split Xrecdir3/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010076 call setline(1, ['a', 'b'])
77 w
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010078 w Xrecdir3/subdir/Xfile
79 w Xrecdir4/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010080 close
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010081 silent !ln -s ../Xrecdir4 Xrecdir3/Xreclink
Bram Moolenaar43a34f92016-01-17 15:56:34 +010082
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010083 call assert_true(isdirectory('Xrecdir3'))
84 call assert_equal(['a', 'b'], readfile('Xrecdir3/Xfile'))
85 call assert_true(isdirectory('Xrecdir3/subdir'))
86 call assert_equal(['a', 'b'], readfile('Xrecdir3/subdir/Xfile'))
87 call assert_true(isdirectory('Xrecdir4'))
88 call assert_true(isdirectory('Xrecdir3/Xreclink'))
89 call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010090
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010091 call assert_equal(0, delete('Xrecdir3', 'rf'))
92 call assert_false(isdirectory('Xrecdir3'))
93 call assert_equal(-1, delete('Xrecdir3', 'd'))
Bram Moolenaar43a34f92016-01-17 15:56:34 +010094 " symlink is deleted, not the directory it points to
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +010095 call assert_true(isdirectory('Xrecdir4'))
96 call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile'))
97 call assert_equal(0, delete('Xrecdir4/Xfile'))
98 call assert_equal(0, delete('Xrecdir4', 'd'))
Bram Moolenaar4520d442017-03-19 16:09:46 +010099
Bram Moolenaar3b0d70f2022-08-29 22:31:20 +0100100 bwipe Xrecdir3/Xfile
101 bwipe Xrecdir3/subdir/Xfile
102 bwipe Xrecdir4/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +0100103endfunc
Bram Moolenaar17aca702019-05-16 22:24:55 +0200104
105func Test_delete_errors()
106 call assert_fails('call delete('''')', 'E474:')
107 call assert_fails('call delete(''foo'', 0)', 'E15:')
108endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200109
Christian Brabandtc4ffedd2023-11-27 23:25:03 +0100110" This should no longer trigger ml_get errors
111func Test_delete_ml_get_errors()
Drew Vogelea67ba72025-05-07 22:05:17 +0200112 CheckScreendump
Christian Brabandtc4ffedd2023-11-27 23:25:03 +0100113 CheckRunVimInTerminal
114 let lines =<< trim END
115 set noshowcmd noruler scrolloff=0
116 source samples/matchparen.vim
117 END
118 call writefile(lines, 'XDelete_ml_get_error', 'D')
119 let buf = RunVimInTerminal('-S XDelete_ml_get_error samples/box.txt', #{rows: 10, wait_for_ruler: 0})
120 call TermWait(buf)
121 call term_sendkeys(buf, "249GV\<C-End>d")
122 call TermWait(buf)
123 " The following used to trigger ml_get errors
124 call term_sendkeys(buf, "\<PageUp>")
125 call TermWait(buf)
126 call term_sendkeys(buf, ":mess\<cr>")
127 call VerifyScreenDump(buf, 'Test_delete_ml_get_errors_1', {})
128 call term_sendkeys(buf, ":q!\<cr>")
129 call StopVimInTerminal(buf)
130endfunc
131
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200132" vim: shiftwidth=2 sts=2 expandtab