xref: /vim-8.2.3635/src/testdir/test_delete.vim (revision a7c4e747)
1" 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'))
11  bwipe Xfile
12endfunc
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')
25  call mkdir('Xdir1/empty')
26  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'))
35  call assert_true('Xdir1/empty'->isdirectory())
36  call assert_equal(0, delete('Xdir1', 'rf'))
37  call assert_false(isdirectory('Xdir1'))
38  call assert_equal(-1, delete('Xdir1', 'd'))
39  bwipe Xdir1/Xfile
40  bwipe Xdir1/subdir/Xfile
41endfunc
42
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'))
55  bwipe Xfile
56endfunc
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'))
103
104  bwipe Xdir3/Xfile
105  bwipe Xdir3/subdir/Xfile
106  bwipe Xdir4/Xfile
107endfunc
108
109func Test_delete_errors()
110  call assert_fails('call delete('''')', 'E474:')
111  call assert_fails('call delete(''foo'', 0)', 'E15:')
112endfunc
113
114" vim: shiftwidth=2 sts=2 expandtab
115