xref: /vim-8.2.3635/src/testdir/test_delete.vim (revision 43a34f9f)
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  split Xdir1/Xfile
25  call setline(1, ['a', 'b'])
26  w
27  w Xdir1/subdir/Xfile
28  close
29  call assert_true(isdirectory('Xdir1'))
30  call assert_equal(['a', 'b'], readfile('Xdir1/Xfile'))
31  call assert_true(isdirectory('Xdir1/subdir'))
32  call assert_equal(['a', 'b'], readfile('Xdir1/subdir/Xfile'))
33  call assert_equal(0, delete('Xdir1', 'rf'))
34  call assert_false(isdirectory('Xdir1'))
35  call assert_equal(-1, delete('Xdir1', 'd'))
36endfunc
37
38func Test_symlink_delete()
39  if !has('unix')
40    return
41  endif
42  split Xfile
43  call setline(1, ['a', 'b'])
44  wq
45  silent !ln -s Xfile Xlink
46  " Delete the link, not the file
47  call assert_equal(0, delete('Xlink'))
48  call assert_equal(-1, delete('Xlink'))
49  call assert_equal(0, delete('Xfile'))
50endfunc
51
52func Test_symlink_dir_delete()
53  if !has('unix')
54    return
55  endif
56  call mkdir('Xdir1')
57  silent !ln -s Xdir1 Xlink
58  call assert_true(isdirectory('Xdir1'))
59  call assert_true(isdirectory('Xlink'))
60  " Delete the link, not the directory
61  call assert_equal(0, delete('Xlink'))
62  call assert_equal(-1, delete('Xlink'))
63  call assert_equal(0, delete('Xdir1', 'd'))
64endfunc
65
66func Test_symlink_recursive_delete()
67  if !has('unix')
68    return
69  endif
70  call mkdir('Xdir3')
71  call mkdir('Xdir3/subdir')
72  call mkdir('Xdir4')
73  split Xdir3/Xfile
74  call setline(1, ['a', 'b'])
75  w
76  w Xdir3/subdir/Xfile
77  w Xdir4/Xfile
78  close
79  silent !ln -s ../Xdir4 Xdir3/Xlink
80
81  call assert_true(isdirectory('Xdir3'))
82  call assert_equal(['a', 'b'], readfile('Xdir3/Xfile'))
83  call assert_true(isdirectory('Xdir3/subdir'))
84  call assert_equal(['a', 'b'], readfile('Xdir3/subdir/Xfile'))
85  call assert_true(isdirectory('Xdir4'))
86  call assert_true(isdirectory('Xdir3/Xlink'))
87  call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
88
89  call assert_equal(0, delete('Xdir3', 'rf'))
90  call assert_false(isdirectory('Xdir3'))
91  call assert_equal(-1, delete('Xdir3', 'd'))
92  " symlink is deleted, not the directory it points to
93  call assert_true(isdirectory('Xdir4'))
94  call assert_equal(['a', 'b'], readfile('Xdir4/Xfile'))
95  call assert_equal(0, delete('Xdir4/Xfile'))
96  call assert_equal(0, delete('Xdir4', 'd'))
97endfunc
98