From 8af9eb47c2b821601c0902d94c4f4e14fad5cd8b Mon Sep 17 00:00:00 2001 From: Michael Deyaso <60641399+Michael-Girma@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:32:53 +0300 Subject: [PATCH] Added date-matching support for list_considering (#7306) added date-matching support for list_considering, fixes #7296 Co-authored-by: Michael Deyaso --- src/borg/manifest.py | 8 ++++++-- src/borg/testsuite/archiver/rlist_cmd.py | 26 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/borg/manifest.py b/src/borg/manifest.py index f81440f92..eab3add06 100644 --- a/src/borg/manifest.py +++ b/src/borg/manifest.py @@ -164,8 +164,12 @@ class Archives(abc.MutableMapping): sort_by=args.sort_by.split(","), consider_checkpoints=consider_checkpoints, match=args.match_archives, - first=args.first, - last=args.last, + first=getattr(args, "first", None), + last=getattr(args, "last", None), + older=getattr(args, "older", None), + newer=getattr(args, "newer", None), + oldest=getattr(args, "oldest", None), + newest=getattr(args, "newest", None), ) def set_raw_dict(self, d): diff --git a/src/borg/testsuite/archiver/rlist_cmd.py b/src/borg/testsuite/archiver/rlist_cmd.py index 7ee7ab58b..8655092fd 100644 --- a/src/borg/testsuite/archiver/rlist_cmd.py +++ b/src/borg/testsuite/archiver/rlist_cmd.py @@ -40,6 +40,32 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.assert_in("test-1 comment 1" + os.linesep, output_3) self.assert_in("test-2 comment 2" + os.linesep, output_3) + def test_date_matching(self): + self.cmd(f"--repo={self.repository_location}", "rcreate", RK_ENCRYPTION) + earliest_ts = "2022-11-20T23:59:59" + ts_in_between = "2022-12-18T23:59:59" + self.create_src_archive("archive1", ts=earliest_ts) + self.create_src_archive("archive2", ts=ts_in_between) + self.create_src_archive("archive3") + output = self.cmd(f"--repo={self.repository_location}", "rlist", "-v", "--oldest=23e", exit_code=2) + output = self.cmd(f"--repo={self.repository_location}", "rlist", "-v", "--oldest=1m", exit_code=0) + self.assert_in("archive1", output) + self.assert_in("archive2", output) + self.assert_not_in("archive3", output) + + output = self.cmd(f"--repo={self.repository_location}", "rlist", "-v", "--newest=1m", exit_code=0) + self.assert_in("archive3", output) + self.assert_not_in("archive2", output) + self.assert_not_in("archive1", output) + output = self.cmd(f"--repo={self.repository_location}", "rlist", "-v", "--newer=1d", exit_code=0) + self.assert_in("archive3", output) + self.assert_not_in("archive1", output) + self.assert_not_in("archive2", output) + output = self.cmd(f"--repo={self.repository_location}", "rlist", "-v", "--older=1d", exit_code=0) + self.assert_in("archive1", output) + self.assert_in("archive2", output) + self.assert_not_in("archive3", output) + def test_rlist_consider_checkpoints(self): self.cmd(f"--repo={self.repository_location}", "rcreate", RK_ENCRYPTION) self.cmd(f"--repo={self.repository_location}", "create", "test1", src_dir)