delete_spec.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. local helpers = require('test.functional.helpers')(after_each)
  2. local clear, source = helpers.clear, helpers.source
  3. local eq, eval, command = helpers.eq, helpers.eval, helpers.command
  4. local exc_exec = helpers.exc_exec
  5. describe('Test for delete()', function()
  6. before_each(clear)
  7. after_each(function()
  8. os.remove('Xfile')
  9. end)
  10. it('file delete', function()
  11. command('split Xfile')
  12. command("call setline(1, ['a', 'b'])")
  13. command('wq')
  14. eq(eval("['a', 'b']"), eval("readfile('Xfile')"))
  15. eq(0, eval("delete('Xfile')"))
  16. eq(-1, eval("delete('Xfile')"))
  17. end)
  18. it('directory delete', function()
  19. command("call mkdir('Xdir1')")
  20. eq(1, eval("isdirectory('Xdir1')"))
  21. eq(0, eval("delete('Xdir1', 'd')"))
  22. eq(0, eval("isdirectory('Xdir1')"))
  23. eq(-1, eval("delete('Xdir1', 'd')"))
  24. end)
  25. it('recursive delete', function()
  26. command("call mkdir('Xdir1')")
  27. command("call mkdir('Xdir1/subdir')")
  28. command("call mkdir('Xdir1/empty')")
  29. command('split Xdir1/Xfile')
  30. command("call setline(1, ['a', 'b'])")
  31. command('w')
  32. command('w Xdir1/subdir/Xfile')
  33. command('close')
  34. eq(1, eval("isdirectory('Xdir1')"))
  35. eq(eval("['a', 'b']"), eval("readfile('Xdir1/Xfile')"))
  36. eq(1, eval("isdirectory('Xdir1/subdir')"))
  37. eq(eval("['a', 'b']"), eval("readfile('Xdir1/subdir/Xfile')"))
  38. eq(1, eval("'Xdir1/empty'->isdirectory()"))
  39. eq(0, eval("delete('Xdir1', 'rf')"))
  40. eq(0, eval("isdirectory('Xdir1')"))
  41. eq(-1, eval("delete('Xdir1', 'd')"))
  42. end)
  43. it('symlink delete', function()
  44. source([[
  45. split Xfile
  46. call setline(1, ['a', 'b'])
  47. wq
  48. if has('win32')
  49. silent !mklink Xlink Xfile
  50. else
  51. silent !ln -s Xfile Xlink
  52. endif
  53. ]])
  54. if eval('v:shell_error') ~= 0 then
  55. pending('Cannot create symlink')
  56. end
  57. -- Delete the link, not the file
  58. eq(0, eval("delete('Xlink')"))
  59. eq(-1, eval("delete('Xlink')"))
  60. eq(0, eval("delete('Xfile')"))
  61. end)
  62. it('symlink directory delete', function()
  63. command("call mkdir('Xdir1')")
  64. if helpers.iswin() then
  65. command("silent !mklink /j Xlink Xdir1")
  66. else
  67. command("silent !ln -s Xdir1 Xlink")
  68. end
  69. eq(1, eval("isdirectory('Xdir1')"))
  70. eq(1, eval("isdirectory('Xlink')"))
  71. -- Delete the link, not the directory
  72. eq(0, eval("delete('Xlink')"))
  73. eq(-1, eval("delete('Xlink')"))
  74. eq(0, eval("delete('Xdir1', 'd')"))
  75. end)
  76. it('symlink recursive delete', function()
  77. source([[
  78. call mkdir('Xdir3')
  79. call mkdir('Xdir3/subdir')
  80. call mkdir('Xdir4')
  81. split Xdir3/Xfile
  82. call setline(1, ['a', 'b'])
  83. w
  84. w Xdir3/subdir/Xfile
  85. w Xdir4/Xfile
  86. close
  87. if has('win32')
  88. silent !mklink /j Xdir3\Xlink Xdir4
  89. else
  90. silent !ln -s ../Xdir4 Xdir3/Xlink
  91. endif
  92. ]])
  93. eq(1, eval("isdirectory('Xdir3')"))
  94. eq(eval("['a', 'b']"), eval("readfile('Xdir3/Xfile')"))
  95. eq(1, eval("isdirectory('Xdir3/subdir')"))
  96. eq(eval("['a', 'b']"), eval("readfile('Xdir3/subdir/Xfile')"))
  97. eq(1, eval("isdirectory('Xdir4')"))
  98. eq(1, eval("isdirectory('Xdir3/Xlink')"))
  99. eq(eval("['a', 'b']"), eval("readfile('Xdir4/Xfile')"))
  100. eq(0, eval("delete('Xdir3', 'rf')"))
  101. eq(0, eval("isdirectory('Xdir3')"))
  102. eq(-1, eval("delete('Xdir3', 'd')"))
  103. -- symlink is deleted, not the directory it points to
  104. eq(1, eval("isdirectory('Xdir4')"))
  105. eq(eval("['a', 'b']"), eval("readfile('Xdir4/Xfile')"))
  106. eq(0, eval("delete('Xdir4/Xfile')"))
  107. eq(0, eval("delete('Xdir4', 'd')"))
  108. end)
  109. it('gives correct emsgs', function()
  110. eq('Vim(call):E474: Invalid argument', exc_exec("call delete('')"))
  111. eq('Vim(call):E15: Invalid expression: 0',
  112. exc_exec("call delete('foo', 0)"))
  113. end)
  114. end)