neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_delete.vim (4065B)


      1 " Test for delete().
      2 
      3 source check.vim
      4 source term_util.vim
      5 source screendump.vim
      6 
      7 func Test_file_delete()
      8  split Xfdelfile
      9  call setline(1, ['a', 'b'])
     10  wq
     11  call assert_equal(['a', 'b'], readfile('Xfdelfile'))
     12  call assert_equal(0, delete('Xfdelfile'))
     13  call assert_fails('call readfile("Xfdelfile")', 'E484:')
     14  call assert_equal(-1, delete('Xfdelfile'))
     15  bwipe Xfdelfile
     16 endfunc
     17 
     18 func Test_dir_delete()
     19  call mkdir('Xdirdel')
     20  call assert_true(isdirectory('Xdirdel'))
     21  call assert_equal(0, delete('Xdirdel', 'd'))
     22  call assert_false(isdirectory('Xdirdel'))
     23  call assert_equal(-1, delete('Xdirdel', 'd'))
     24 endfunc
     25 
     26 func Test_recursive_delete()
     27  call mkdir('Xrecdel')
     28  call mkdir('Xrecdel/subdir')
     29  call mkdir('Xrecdel/empty')
     30  split Xrecdel/Xfile
     31  call setline(1, ['a', 'b'])
     32  w
     33  w Xrecdel/subdir/Xfile
     34  close
     35  call assert_true(isdirectory('Xrecdel'))
     36  call assert_equal(['a', 'b'], readfile('Xrecdel/Xfile'))
     37  call assert_true(isdirectory('Xrecdel/subdir'))
     38  call assert_equal(['a', 'b'], readfile('Xrecdel/subdir/Xfile'))
     39  call assert_true('Xrecdel/empty'->isdirectory())
     40  call assert_equal(0, delete('Xrecdel', 'rf'))
     41  call assert_false(isdirectory('Xrecdel'))
     42  call assert_equal(-1, delete('Xrecdel', 'd'))
     43  bwipe Xrecdel/Xfile
     44  bwipe Xrecdel/subdir/Xfile
     45 endfunc
     46 
     47 func Test_symlink_delete()
     48  CheckUnix
     49  split Xslfile
     50  call setline(1, ['a', 'b'])
     51  wq
     52  silent !ln -s Xslfile Xdellink
     53  " Delete the link, not the file
     54  call assert_equal(0, delete('Xdellink'))
     55  call assert_equal(-1, delete('Xdellink'))
     56  call assert_equal(0, delete('Xslfile'))
     57  bwipe Xslfile
     58 endfunc
     59 
     60 func Test_symlink_dir_delete()
     61  CheckUnix
     62  call mkdir('Xsymdir')
     63  silent !ln -s Xsymdir Xdirlink
     64  call assert_true(isdirectory('Xsymdir'))
     65  call assert_true(isdirectory('Xdirlink'))
     66  " Delete the link, not the directory
     67  call assert_equal(0, delete('Xdirlink'))
     68  call assert_equal(-1, delete('Xdirlink'))
     69  call assert_equal(0, delete('Xsymdir', 'd'))
     70 endfunc
     71 
     72 func Test_symlink_recursive_delete()
     73  CheckUnix
     74  call mkdir('Xrecdir3')
     75  call mkdir('Xrecdir3/subdir')
     76  call mkdir('Xrecdir4')
     77  split Xrecdir3/Xfile
     78  call setline(1, ['a', 'b'])
     79  w
     80  w Xrecdir3/subdir/Xfile
     81  w Xrecdir4/Xfile
     82  close
     83  silent !ln -s ../Xrecdir4 Xrecdir3/Xreclink
     84 
     85  call assert_true(isdirectory('Xrecdir3'))
     86  call assert_equal(['a', 'b'], readfile('Xrecdir3/Xfile'))
     87  call assert_true(isdirectory('Xrecdir3/subdir'))
     88  call assert_equal(['a', 'b'], readfile('Xrecdir3/subdir/Xfile'))
     89  call assert_true(isdirectory('Xrecdir4'))
     90  call assert_true(isdirectory('Xrecdir3/Xreclink'))
     91  call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile'))
     92 
     93  call assert_equal(0, delete('Xrecdir3', 'rf'))
     94  call assert_false(isdirectory('Xrecdir3'))
     95  call assert_equal(-1, delete('Xrecdir3', 'd'))
     96  " symlink is deleted, not the directory it points to
     97  call assert_true(isdirectory('Xrecdir4'))
     98  call assert_equal(['a', 'b'], readfile('Xrecdir4/Xfile'))
     99  call assert_equal(0, delete('Xrecdir4/Xfile'))
    100  call assert_equal(0, delete('Xrecdir4', 'd'))
    101 
    102  bwipe Xrecdir3/Xfile
    103  bwipe Xrecdir3/subdir/Xfile
    104  bwipe Xrecdir4/Xfile
    105 endfunc
    106 
    107 func Test_delete_errors()
    108  call assert_fails('call delete('''')', 'E474:')
    109  call assert_fails('call delete(''foo'', 0)', 'E15:')
    110 endfunc
    111 
    112 " This should no longer trigger ml_get errors
    113 func Test_delete_ml_get_errors()
    114  CheckScreendump
    115  CheckRunVimInTerminal
    116  let lines =<< trim END
    117    set noshowcmd noruler scrolloff=0
    118    source samples/matchparen.vim
    119  END
    120  call writefile(lines, 'XDelete_ml_get_error', 'D')
    121  let buf = RunVimInTerminal('-S XDelete_ml_get_error samples/box.txt', #{rows: 10, wait_for_ruler: 0})
    122  call TermWait(buf)
    123  call term_sendkeys(buf, "249GV\<C-End>d")
    124  call TermWait(buf)
    125  " The following used to trigger ml_get errors
    126  call term_sendkeys(buf, "\<PageUp>")
    127  call TermWait(buf)
    128  call term_sendkeys(buf, ":mess\<cr>")
    129  call VerifyScreenDump(buf, 'Test_delete_ml_get_errors_1', {})
    130  call term_sendkeys(buf, ":q!\<cr>")
    131  call StopVimInTerminal(buf)
    132 endfunc
    133 
    134 " vim: shiftwidth=2 sts=2 expandtab