xref: /vim-8.2.3635/src/testdir/test_delete.vim (revision 8ea05de6)
1" Test for delete().
2
3source check.vim
4
5func Test_file_delete()
6  split Xfile
7  call setline(1, ['a', 'b'])
8  wq
9  call assert_equal(['a', 'b'], readfile('Xfile'))
10  call assert_equal(0, delete('Xfile'))
11  call assert_fails('call readfile("Xfile")', 'E484:')
12  call assert_equal(-1, delete('Xfile'))
13  bwipe Xfile
14endfunc
15
16func Test_dir_delete()
17  call mkdir('Xdir1')
18  call assert_true(isdirectory('Xdir1'))
19  call assert_equal(0, delete('Xdir1', 'd'))
20  call assert_false(isdirectory('Xdir1'))
21  call assert_equal(-1, delete('Xdir1', 'd'))
22endfunc
23
24func Test_recursive_delete()
25  call mkdir('Xdir1')
26  call mkdir('Xdir1/subdir')
27  call mkdir('Xdir1/empty')
28  split Xdir1/Xfile
29  call setline(1, ['a', 'b'])
30  w
31  w Xdir1/subdir/Xfile
32  close
33  call assert_true(isdirectory('Xdir1'))
34  call assert_equal(['a', 'b'], readfile('Xdir1/Xfile'))
35  call assert_true(isdirectory('Xdir1/subdir'))
36  call assert_equal(['a', 'b'], readfile('Xdir1/subdir/Xfile'))
37  call assert_true('Xdir1/empty'->isdirectory())
38  call assert_equal(0, delete('Xdir1', 'rf'))
39  call assert_false(isdirectory('Xdir1'))
40  call assert_equal(-1, delete('Xdir1', 'd'))
41  bwipe Xdir1/Xfile
42  bwipe Xdir1/subdir/Xfile
43endfunc
44
45func Test_symlink_delete()
46  CheckUnix
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'))
55  bwipe Xfile
56endfunc
57
58func Test_symlink_dir_delete()
59  CheckUnix
60  call mkdir('Xdir1')
61  silent !ln -s Xdir1 Xlink
62  call assert_true(isdirectory('Xdir1'))
63  call assert_true(isdirectory('Xlink'))
64  " Delete the link, not the directory
65  call assert_equal(0, delete('Xlink'))
66  call assert_equal(-1, delete('Xlink'))
67  call assert_equal(0, delete('Xdir1', 'd'))
68endfunc
69
70func Test_symlink_recursive_delete()
71  CheckUnix
72  call mkdir('Xdir3')
73  call mkdir('Xdir3/subdir')
74  call mkdir('Xdir4')
75  split Xdir3/Xfile
76  call setline(1, ['a', 'b'])
77  w
78  w Xdir3/subdir/Xfile
79  w Xdir4/Xfile
80  close
81  silent !ln -s ../Xdir4 Xdir3/Xlink
82
83  call assert_true(isdirectory('Xdir3'))
84  call assert_equal(['a', 'b'], readfile('Xdir3/Xfile'))
85  call assert_true(isdirectory('Xdir3/subdir'))
86  call assert_equal(['a', 'b'], readfile('Xdir3/subdir/Xfile'))
87  call assert_true(isdirectory('Xdir4'))
88  call assert_true(isdirectory('Xdir3/Xlink'))
89  call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
90
91  call assert_equal(0, delete('Xdir3', 'rf'))
92  call assert_false(isdirectory('Xdir3'))
93  call assert_equal(-1, delete('Xdir3', 'd'))
94  " symlink is deleted, not the directory it points to
95  call assert_true(isdirectory('Xdir4'))
96  call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
97  call assert_equal(0, delete('Xdir4/Xfile'))
98  call assert_equal(0, delete('Xdir4', 'd'))
99
100  bwipe Xdir3/Xfile
101  bwipe Xdir3/subdir/Xfile
102  bwipe Xdir4/Xfile
103endfunc
104
105func Test_delete_errors()
106  call assert_fails('call delete('''')', 'E474:')
107  call assert_fails('call delete(''foo'', 0)', 'E15:')
108endfunc
109
110" vim: shiftwidth=2 sts=2 expandtab
111