diff --git a/src/borg/manifest.py b/src/borg/manifest.py index 4eb9b1e3b..c6409f4b7 100644 --- a/src/borg/manifest.py +++ b/src/borg/manifest.py @@ -39,6 +39,9 @@ def get_first_and_last_archive_ts(archives_list): timestamps = [x.ts for x in archives_list] return min(timestamps), max(timestamps) + if not archives: + return archives + now = archive_ts_now() earliest_ts, latest_ts = get_first_and_last_archive_ts(archives) @@ -46,6 +49,9 @@ def get_first_and_last_archive_ts(archives_list): from_ts = calculate_relative_offset(newer, now, earlier=True) if newer is not None else earliest_ts archives = [x for x in archives if from_ts <= x.ts <= until_ts] + if not archives: + return archives + earliest_ts, latest_ts = get_first_and_last_archive_ts(archives) if oldest: until_ts = calculate_relative_offset(oldest, earliest_ts, earlier=False) @@ -136,7 +142,7 @@ def list( regex = re.compile(regex + match_end) archives = [x for x in archives if regex.match(x.name) is not None] - if any([oldest, newest, older, newer]) and len(archives) > 0: + if any([oldest, newest, older, newer]): archives = filter_archives_by_date(archives, oldest=oldest, newest=newest, newer=newer, older=older) if not consider_checkpoints: archives = [x for x in archives if ".checkpoint" not in x.name] diff --git a/src/borg/testsuite/archiver/check_cmd.py b/src/borg/testsuite/archiver/check_cmd.py index 023a983d6..9669ee7ac 100644 --- a/src/borg/testsuite/archiver/check_cmd.py +++ b/src/borg/testsuite/archiver/check_cmd.py @@ -92,6 +92,13 @@ def test_date_matching(self): self.assert_in("archive2", output) self.assert_not_in("archive3", output) + # check for output when timespan older than earliest archive is given. Issue #1711 + output = self.cmd( + f"--repo={self.repository_location}", "check", "-v", "--archives-only", "--older=9999m", exit_code=0 + ) + for archive in ("archive1", "archive2", "archive3"): + self.assert_not_in(archive, output) + def test_missing_file_chunk(self): archive, repository = self.open_archive("archive1") with repository: