From 50a7517a6deb7d8eaa02bf718e273b7058066d89 Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Sun, 28 Feb 2016 10:32:46 +0100 Subject: vim-patch:7.4.1107 Problem: Vim can create a directory but not delete it. Solution: Add an argument to delete() to make it possible to delete a directory, also recursively. https://github.com/vim/vim/commit/da440d21a6b94d7f525fa7be9b1417c78dd9aa4c --- test/functional/legacy/delete_spec.lua | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/functional/legacy/delete_spec.lua (limited to 'test/functional') diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua new file mode 100644 index 0000000000..01b06d606f --- /dev/null +++ b/test/functional/legacy/delete_spec.lua @@ -0,0 +1,41 @@ +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local eq, eval, execute, expect = helpers.eq, helpers.eval, helpers.execute, helpers.expect + +describe('Test for delete()', function() + before_each(clear) + + it('file delete', function() + execute('split Xfile') + execute("call setline(1, ['a', 'b'])") + execute('wq') + eq(eval("['a', 'b']"), eval("readfile('Xfile')")) + eq(0, eval("delete('Xfile')")) + eq(-1, eval("delete('Xfile')")) + end) + + it('directory delete', function() + execute("call mkdir('Xdir1')") + eq(1, eval("isdirectory('Xdir1')")) + eq(0, eval("delete('Xdir1', 'd')")) + eq(0, eval("isdirectory('Xdir1')")) + eq(-1, eval("delete('Xdir1', 'd')")) + end) + it('recursive delete', function() + execute("call mkdir('Xdir1')") + execute("call mkdir('Xdir1/subdir')") + execute('split Xdir1/Xfile') + execute("call setline(1, ['a', 'b'])") + execute('w') + execute('w Xdir1/subdir/Xfile') + execute('close') + + eq(1, eval("isdirectory('Xdir1')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir1/Xfile')")) + eq(1, eval("isdirectory('Xdir1/subdir')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir1/subdir/Xfile')")) + eq(0, eval("delete('Xdir1', 'rf')")) + eq(0, eval("isdirectory('Xdir1')")) + eq(-1, eval("delete('Xdir1', 'd')")) + end) +end) -- cgit From 88a735166b7ee1eadaf6d46be11804dc0e1a251a Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Sun, 28 Feb 2016 12:44:59 +0100 Subject: vim-patch:7.4.1114 Problem: delete() does not work well with symbolic links. Solution: Recognize symbolik links. https://github.com/vim/vim/commit/43a34f9f74fdce462fa250baab620264c28b6165 --- test/functional/legacy/delete_spec.lua | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'test/functional') diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua index 01b06d606f..b524af3338 100644 --- a/test/functional/legacy/delete_spec.lua +++ b/test/functional/legacy/delete_spec.lua @@ -1,5 +1,6 @@ local helpers = require('test.functional.helpers') local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local source = helpers.source local eq, eval, execute, expect = helpers.eq, helpers.eval, helpers.execute, helpers.expect describe('Test for delete()', function() @@ -38,4 +39,60 @@ describe('Test for delete()', function() eq(0, eval("isdirectory('Xdir1')")) eq(-1, eval("delete('Xdir1', 'd')")) end) + + it('symlink delete', function() + source([[ + split Xfile + call setline(1, ['a', 'b']) + wq + silent !ln -s Xfile Xlink + ]]) + -- Delete the link, not the file + eq(0, eval("delete('Xlink')")) + eq(-1, eval("delete('Xlink')")) + eq(0, eval("delete('Xfile')")) + end) + + it('symlink directory delete', function() + execute("call mkdir('Xdir1')") + execute("silent !ln -s Xdir1 Xlink") + eq(1, eval("isdirectory('Xdir1')")) + eq(1, eval("isdirectory('Xlink')")) + -- Delete the link, not the directory + eq(0, eval("delete('Xlink')")) + eq(-1, eval("delete('Xlink')")) + eq(0, eval("delete('Xdir1', 'd')")) + end) + + it('symlink recursive delete', function() + source([[ + call mkdir('Xdir3') + call mkdir('Xdir3/subdir') + call mkdir('Xdir4') + split Xdir3/Xfile + call setline(1, ['a', 'b']) + w + w Xdir3/subdir/Xfile + w Xdir4/Xfile + close + silent !ln -s ../Xdir4 Xdir3/Xlink + ]]) + + eq(1, eval("isdirectory('Xdir3')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir3/Xfile')")) + eq(1, eval("isdirectory('Xdir3/subdir')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir3/subdir/Xfile')")) + eq(1, eval("isdirectory('Xdir4')")) + eq(1, eval("isdirectory('Xdir3/Xlink')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir4/Xfile')")) + + eq(0, eval("delete('Xdir3', 'rf')")) + eq(0, eval("isdirectory('Xdir3')")) + eq(-1, eval("delete('Xdir3', 'd')")) + -- symlink is deleted, not the directory it points to + eq(1, eval("isdirectory('Xdir4')")) + eq(eval("['a', 'b']"), eval("readfile('Xdir4/Xfile')")) + eq(0, eval("delete('Xdir4/Xfile')")) + eq(0, eval("delete('Xdir4', 'd')")) + end) end) -- cgit From 425fcdb5b4bc6dec05dafe2e2675c8a7cfe37187 Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Sun, 28 Feb 2016 13:26:10 +0100 Subject: vim-patch:7.4.1120 Problem: delete(x, 'rf') fails if a directory is empty. (Lcd) Solution: Ignore not finding matches in an empty directory. https://github.com/vim/vim/commit/336bd622c31e1805495c034e1a8cfadcc0bbabc7 --- test/functional/legacy/delete_spec.lua | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test/functional') diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua index b524af3338..75c3fdf1a0 100644 --- a/test/functional/legacy/delete_spec.lua +++ b/test/functional/legacy/delete_spec.lua @@ -25,6 +25,7 @@ describe('Test for delete()', function() it('recursive delete', function() execute("call mkdir('Xdir1')") execute("call mkdir('Xdir1/subdir')") + execute("call mkdir('Xdir1/empty')") execute('split Xdir1/Xfile') execute("call setline(1, ['a', 'b'])") execute('w') @@ -35,6 +36,7 @@ describe('Test for delete()', function() eq(eval("['a', 'b']"), eval("readfile('Xdir1/Xfile')")) eq(1, eval("isdirectory('Xdir1/subdir')")) eq(eval("['a', 'b']"), eval("readfile('Xdir1/subdir/Xfile')")) + eq(1, eval("isdirectory('Xdir1/empty')")) eq(0, eval("delete('Xdir1', 'rf')")) eq(0, eval("isdirectory('Xdir1')")) eq(-1, eval("delete('Xdir1', 'd')")) -- cgit From 5734e218738e7b76cef1e2acfdc79a17dad650ad Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Mon, 29 Feb 2016 20:27:48 +0100 Subject: delete_spec: Fix linter errors. --- test/functional/legacy/delete_spec.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'test/functional') diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua index 75c3fdf1a0..cd18a8f750 100644 --- a/test/functional/legacy/delete_spec.lua +++ b/test/functional/legacy/delete_spec.lua @@ -1,7 +1,6 @@ local helpers = require('test.functional.helpers') -local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert -local source = helpers.source -local eq, eval, execute, expect = helpers.eq, helpers.eval, helpers.execute, helpers.expect +local clear, source = helpers.clear, helpers.source +local eq, eval, execute = helpers.eq, helpers.eval, helpers.execute describe('Test for delete()', function() before_each(clear) -- cgit