From b3b038b8966a49384b1c327c9bbdfbf51bc8f4d8 Mon Sep 17 00:00:00 2001 From: Enam Mijbah Noor Date: Mon, 12 Feb 2024 11:09:22 +0600 Subject: [PATCH 1/2] Fix non-recursive rm deleting files in subdirectories --- b2/_internal/console_tool.py | 6 +++++- changelog.d/+fix-rm-non-recursive.fixed.md | 2 ++ test/unit/test_console_tool.py | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 changelog.d/+fix-rm-non-recursive.fixed.md diff --git a/b2/_internal/console_tool.py b/b2/_internal/console_tool.py index 03219db72..329235e52 100644 --- a/b2/_internal/console_tool.py +++ b/b2/_internal/console_tool.py @@ -2405,7 +2405,11 @@ def run(self) -> None: self.messages_queue.put(self.END_MARKER) def _run_removal(self, executor: Executor): - for file_version, _ in self.runner._get_ls_generator(self.args): + for file_version, subdirectory in self.runner._get_ls_generator(self.args): + if subdirectory is not None: + # This file_version is not for listing/deleting. + # It is only here to list the subdirectory, so skip deleting it. + continue # Obtaining semaphore limits number of elements that we fetch from LS. self.semaphore.acquire(blocking=True) # This event is updated before the semaphore is released. This way, diff --git a/changelog.d/+fix-rm-non-recursive.fixed.md b/changelog.d/+fix-rm-non-recursive.fixed.md new file mode 100644 index 000000000..16bae6e41 --- /dev/null +++ b/changelog.d/+fix-rm-non-recursive.fixed.md @@ -0,0 +1,2 @@ +Fixed a bug where `rm` command without the `--recursive` flag would +remove a file from every subdirectory inside `folderName`. diff --git a/test/unit/test_console_tool.py b/test/unit/test_console_tool.py index 9d221eef2..ab397fd52 100644 --- a/test/unit/test_console_tool.py +++ b/test/unit/test_console_tool.py @@ -2599,6 +2599,9 @@ def test_rm_no_recursive(self): expected_stdout = ''' a/test.csv a/test.tsv + b/b/test.csv + b/b1/test.csv + b/b2/test.tsv c/test.csv c/test.tsv ''' From d8c4e96e5d827252ea78adc4a2510d282cc6cb4a Mon Sep 17 00:00:00 2001 From: emnoor-reef <137923473+emnoor-reef@users.noreply.github.com> Date: Tue, 13 Feb 2024 21:05:06 +0600 Subject: [PATCH 2/2] Update changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Maciej UrbaƄski <122983254+mjurbanski-reef@users.noreply.github.com> --- changelog.d/+fix-rm-non-recursive.fixed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/+fix-rm-non-recursive.fixed.md b/changelog.d/+fix-rm-non-recursive.fixed.md index 16bae6e41..932b78cb6 100644 --- a/changelog.d/+fix-rm-non-recursive.fixed.md +++ b/changelog.d/+fix-rm-non-recursive.fixed.md @@ -1,2 +1,2 @@ -Fixed a bug where `rm` command without the `--recursive` flag would +Fixed a bug where `rm bucketName folderName` command without the `--recursive` flag would remove a file from every subdirectory inside `folderName`.