mirror of https://github.com/borgbackup/borg.git
Merge pull request #6025 from amikula/issue_6015
Handle case of calling prune_split when there are no archives, #6015
This commit is contained in:
commit
450ab38e42
|
@ -49,6 +49,8 @@ def prune_split(archives, rule, n, kept_because=None):
|
||||||
kept_because = {}
|
kept_because = {}
|
||||||
if n == 0:
|
if n == 0:
|
||||||
return keep
|
return keep
|
||||||
|
|
||||||
|
a = None
|
||||||
for a in sorted(archives, key=attrgetter('ts'), reverse=True):
|
for a in sorted(archives, key=attrgetter('ts'), reverse=True):
|
||||||
period = to_localtime(a.ts).strftime(pattern)
|
period = to_localtime(a.ts).strftime(pattern)
|
||||||
if period != last:
|
if period != last:
|
||||||
|
@ -59,7 +61,7 @@ def prune_split(archives, rule, n, kept_because=None):
|
||||||
if len(keep) == n:
|
if len(keep) == n:
|
||||||
break
|
break
|
||||||
# Keep oldest archive if we didn't reach the target retention count
|
# Keep oldest archive if we didn't reach the target retention count
|
||||||
if len(keep) < n and a.id not in kept_because:
|
if a is not None and len(keep) < n and a.id not in kept_because:
|
||||||
keep.append(a)
|
keep.append(a)
|
||||||
kept_because[a.id] = (rule+"[oldest]", len(keep))
|
kept_because[a.id] = (rule+"[oldest]", len(keep))
|
||||||
return keep
|
return keep
|
||||||
|
|
|
@ -439,6 +439,19 @@ def test_prune_split_keep_oldest():
|
||||||
assert kept_because[4][0] == "yearly"
|
assert kept_because[4][0] == "yearly"
|
||||||
|
|
||||||
|
|
||||||
|
def test_prune_split_no_archives():
|
||||||
|
def subset(lst, ids):
|
||||||
|
return {i for i in lst if i.id in ids}
|
||||||
|
|
||||||
|
archives = []
|
||||||
|
|
||||||
|
kept_because = {}
|
||||||
|
keep = prune_split(archives, "yearly", 3, kept_because)
|
||||||
|
|
||||||
|
assert keep == []
|
||||||
|
assert kept_because == {}
|
||||||
|
|
||||||
|
|
||||||
class IntervalTestCase(BaseTestCase):
|
class IntervalTestCase(BaseTestCase):
|
||||||
def test_interval(self):
|
def test_interval(self):
|
||||||
self.assert_equal(interval('1H'), 1)
|
self.assert_equal(interval('1H'), 1)
|
||||||
|
|
Loading…
Reference in New Issue