test_delete.vim 4.0 KB

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