xref: /vim-8.2.3635/src/testdir/test_delete.vim (revision 818c9e7e)
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'))
11endfunc
12
13func Test_dir_delete()
14  call mkdir('Xdir1')
15  call assert_true(isdirectory('Xdir1'))
16  call assert_equal(0, delete('Xdir1', 'd'))
17  call assert_false(isdirectory('Xdir1'))
18  call assert_equal(-1, delete('Xdir1', 'd'))
19endfunc
20
21func Test_recursive_delete()
22  call mkdir('Xdir1')
23  call mkdir('Xdir1/subdir')
24  call mkdir('Xdir1/empty')
25  split Xdir1/Xfile
26  call setline(1, ['a', 'b'])
27  w
28  w Xdir1/subdir/Xfile
29  close
30  call assert_true(isdirectory('Xdir1'))
31  call assert_equal(['a', 'b'], readfile('Xdir1/Xfile'))
32  call assert_true(isdirectory('Xdir1/subdir'))
33  call assert_equal(['a', 'b'], readfile('Xdir1/subdir/Xfile'))
34  call assert_true(isdirectory('Xdir1/empty'))
35  call assert_equal(0, delete('Xdir1', 'rf'))
36  call assert_false(isdirectory('Xdir1'))
37  call assert_equal(-1, delete('Xdir1', 'd'))
38endfunc
39
40func Test_symlink_delete()
41  if !has('unix')
42    return
43  endif
44  split Xfile
45  call setline(1, ['a', 'b'])
46  wq
47  silent !ln -s Xfile Xlink
48  " Delete the link, not the file
49  call assert_equal(0, delete('Xlink'))
50  call assert_equal(-1, delete('Xlink'))
51  call assert_equal(0, delete('Xfile'))
52endfunc
53
54func Test_symlink_dir_delete()
55  if !has('unix')
56    return
57  endif
58  call mkdir('Xdir1')
59  silent !ln -s Xdir1 Xlink
60  call assert_true(isdirectory('Xdir1'))
61  call assert_true(isdirectory('Xlink'))
62  " Delete the link, not the directory
63  call assert_equal(0, delete('Xlink'))
64  call assert_equal(-1, delete('Xlink'))
65  call assert_equal(0, delete('Xdir1', 'd'))
66endfunc
67
68func Test_symlink_recursive_delete()
69  if !has('unix')
70    return
71  endif
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'))
99endfunc
100