blob: b23a3bd025edef819cc6d9d1725ebf38f137b2a1 [file] [log] [blame]
Bram Moolenaarda440d22016-01-16 21:27:23 +01001" Test for delete().
2
3func Test_file_delete()
4 split Xfile
5 call setline(1, ['a', 'b'])
6 wq
7 call assert_equal(['a', 'b'], readfile('Xfile'))
8 call assert_equal(0, delete('Xfile'))
9 call assert_fails('call readfile("Xfile")', 'E484:')
10 call assert_equal(-1, delete('Xfile'))
Bram Moolenaar4520d442017-03-19 16:09:46 +010011 bwipe Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010012endfunc
13
14func Test_dir_delete()
15 call mkdir('Xdir1')
16 call assert_true(isdirectory('Xdir1'))
17 call assert_equal(0, delete('Xdir1', 'd'))
18 call assert_false(isdirectory('Xdir1'))
19 call assert_equal(-1, delete('Xdir1', 'd'))
20endfunc
21
22func Test_recursive_delete()
23 call mkdir('Xdir1')
24 call mkdir('Xdir1/subdir')
Bram Moolenaar336bd622016-01-17 18:23:58 +010025 call mkdir('Xdir1/empty')
Bram Moolenaarda440d22016-01-16 21:27:23 +010026 split Xdir1/Xfile
27 call setline(1, ['a', 'b'])
28 w
29 w Xdir1/subdir/Xfile
30 close
31 call assert_true(isdirectory('Xdir1'))
32 call assert_equal(['a', 'b'], readfile('Xdir1/Xfile'))
33 call assert_true(isdirectory('Xdir1/subdir'))
34 call assert_equal(['a', 'b'], readfile('Xdir1/subdir/Xfile'))
Bram Moolenaarf9f24ce2019-08-31 21:17:39 +020035 call assert_true('Xdir1/empty'->isdirectory())
Bram Moolenaarda440d22016-01-16 21:27:23 +010036 call assert_equal(0, delete('Xdir1', 'rf'))
37 call assert_false(isdirectory('Xdir1'))
38 call assert_equal(-1, delete('Xdir1', 'd'))
Bram Moolenaar4520d442017-03-19 16:09:46 +010039 bwipe Xdir1/Xfile
40 bwipe Xdir1/subdir/Xfile
Bram Moolenaarda440d22016-01-16 21:27:23 +010041endfunc
Bram Moolenaar43a34f92016-01-17 15:56:34 +010042
43func Test_symlink_delete()
44 if !has('unix')
45 return
46 endif
47 split Xfile
48 call setline(1, ['a', 'b'])
49 wq
50 silent !ln -s Xfile Xlink
51 " Delete the link, not the file
52 call assert_equal(0, delete('Xlink'))
53 call assert_equal(-1, delete('Xlink'))
54 call assert_equal(0, delete('Xfile'))
Bram Moolenaar4520d442017-03-19 16:09:46 +010055 bwipe Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +010056endfunc
57
58func Test_symlink_dir_delete()
59 if !has('unix')
60 return
61 endif
62 call mkdir('Xdir1')
63 silent !ln -s Xdir1 Xlink
64 call assert_true(isdirectory('Xdir1'))
65 call assert_true(isdirectory('Xlink'))
66 " Delete the link, not the directory
67 call assert_equal(0, delete('Xlink'))
68 call assert_equal(-1, delete('Xlink'))
69 call assert_equal(0, delete('Xdir1', 'd'))
70endfunc
71
72func Test_symlink_recursive_delete()
73 if !has('unix')
74 return
75 endif
76 call mkdir('Xdir3')
77 call mkdir('Xdir3/subdir')
78 call mkdir('Xdir4')
79 split Xdir3/Xfile
80 call setline(1, ['a', 'b'])
81 w
82 w Xdir3/subdir/Xfile
83 w Xdir4/Xfile
84 close
85 silent !ln -s ../Xdir4 Xdir3/Xlink
86
87 call assert_true(isdirectory('Xdir3'))
88 call assert_equal(['a', 'b'], readfile('Xdir3/Xfile'))
89 call assert_true(isdirectory('Xdir3/subdir'))
90 call assert_equal(['a', 'b'], readfile('Xdir3/subdir/Xfile'))
91 call assert_true(isdirectory('Xdir4'))
92 call assert_true(isdirectory('Xdir3/Xlink'))
93 call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
94
95 call assert_equal(0, delete('Xdir3', 'rf'))
96 call assert_false(isdirectory('Xdir3'))
97 call assert_equal(-1, delete('Xdir3', 'd'))
98 " symlink is deleted, not the directory it points to
99 call assert_true(isdirectory('Xdir4'))
100 call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
101 call assert_equal(0, delete('Xdir4/Xfile'))
102 call assert_equal(0, delete('Xdir4', 'd'))
Bram Moolenaar4520d442017-03-19 16:09:46 +0100103
104 bwipe Xdir3/Xfile
105 bwipe Xdir3/subdir/Xfile
106 bwipe Xdir4/Xfile
Bram Moolenaar43a34f92016-01-17 15:56:34 +0100107endfunc
Bram Moolenaar17aca702019-05-16 22:24:55 +0200108
109func Test_delete_errors()
110 call assert_fails('call delete('''')', 'E474:')
111 call assert_fails('call delete(''foo'', 0)', 'E15:')
112endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200113
114" vim: shiftwidth=2 sts=2 expandtab