From: Konstantin Belyavskiy <k.belyavskiy@tarantool.org> To: tarantool-patches@freelists.org Subject: [tarantool-patches] [PATCH] lua: fix fio.rmtree to work with non empty dirs Date: Mon, 16 Jul 2018 19:15:43 +0300 [thread overview] Message-ID: <20180716161543.14753-1-k.belyavskiy@tarantool.org> (raw) Fix 'fio.rmtree' to remove a non empty directories. And update test. Closes #3258 --- Ticket: https://github.com/tarantool/tarantool/issues/3258 Branch: https://github.com/tarantool/tarantool/tree/kbelyavs/gh-3258-fix-fio-rmtree src/lua/fio.lua | 8 ++++++-- test/app/fio.result | 16 ++++++++++++++++ test/app/fio.test.lua | 7 +++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/lua/fio.lua b/src/lua/fio.lua index 3fda6e532..d5531c154 100644 --- a/src/lua/fio.lua +++ b/src/lua/fio.lua @@ -382,8 +382,12 @@ fio.rmtree = function(path) for i, f in ipairs(ls) do local tmppath = fio.pathjoin(path, f) local st = fio.stat(tmppath) - if st and st:is_dir() then - st, err = fio.rmtree(tmppath) + if st then + if st:is_dir() then + st, err = fio.rmtree(tmppath) + else + st, err = fio.unlink(tmppath) + end if err ~= nil then return nil, err end diff --git a/test/app/fio.result b/test/app/fio.result index 6c4609855..d985b688b 100644 --- a/test/app/fio.result +++ b/test/app/fio.result @@ -413,6 +413,22 @@ fio.rmdir(dir2) - false - 'fio: No such file or directory' ... +-- gh-3258 rmtree should remove directories with files +fio.mktree('tmp2/tmp3/tmp4') +--- +- true +... +fh = fio.open('tmp2/tmp3/tmp4/tmp.txt', {'O_RDWR', 'O_CREAT'}) +--- +... +fh:close() +--- +- true +... +fio.rmtree('tmp2') +--- +- true +... fio.rmdir(tmpdir) --- - true diff --git a/test/app/fio.test.lua b/test/app/fio.test.lua index 0850413d9..14e0fb72c 100644 --- a/test/app/fio.test.lua +++ b/test/app/fio.test.lua @@ -131,6 +131,13 @@ fio.rmdir(dir2) { fio.unlink(file1), fio.unlink(file2), fio.unlink(file3), fio.unlink(file4) } { fio.unlink(file1), fio.unlink(file2), fio.unlink(file3), fio.unlink(file4) } + +-- gh-3258 rmtree should remove directories with files +fio.mktree('tmp2/tmp3/tmp4') +fh = fio.open('tmp2/tmp3/tmp4/tmp.txt', {'O_RDWR', 'O_CREAT'}) +fh:close() +fio.rmtree('tmp2') + fio.rmdir(tmpdir) fio.rmdir(tmpdir) -- 2.14.3 (Apple Git-98)
next reply other threads:[~2018-07-16 16:15 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-16 16:15 Konstantin Belyavskiy [this message] 2018-07-18 3:43 ` [tarantool-patches] " Alexander Turenko 2018-07-23 17:27 ` [tarantool-patches] Re[2]: [tarantool-patches] " Konstantin Belyavskiy 2018-07-24 9:28 ` [tarantool-patches] Re: Re[2]: " Alexander Turenko 2018-07-26 21:32 ` [tarantool-patches] " Konstantin Osipov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180716161543.14753-1-k.belyavskiy@tarantool.org \ --to=k.belyavskiy@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH] lua: fix fio.rmtree to work with non empty dirs' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox