mirror of
https://github.com/borgbackup/borg.git
synced 2025-02-26 07:53:58 +00:00
tests: fix prune_split tests by giving the timestamps in local timezone
Guess this fixes issues like #5535. I tested this with TZ=: - UTC - UTC+12 - UTC-12 - UTC+14 - UTC-14
This commit is contained in:
parent
8a2fd39212
commit
0e577452c2
1 changed files with 28 additions and 17 deletions
|
@ -405,6 +405,17 @@ def __repr__(self):
|
|||
return f"{self.id}: {self.ts.isoformat()}"
|
||||
|
||||
|
||||
# This is the local timezone of the system running the tests.
|
||||
# We need this e.g. to construct archive timestamps for the prune tests,
|
||||
# because borg prune operates in the local timezone (it first converts the
|
||||
# archive timestamp to the local timezone). So, if we want the y/m/d/h/m/s
|
||||
# values which prune uses to be exactly the ones we give [and NOT shift them
|
||||
# by tzoffset], we need to give the timestamps in the same local timezone.
|
||||
# Please note that the timestamps in a real borg archive or manifest are
|
||||
# stored in UTC timezone.
|
||||
local_tz = datetime.now(tz=timezone.utc).astimezone(tz=None).tzinfo
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"rule,num_to_keep,expected_ids",
|
||||
[
|
||||
|
@ -424,23 +435,23 @@ def subset(lst, ids):
|
|||
|
||||
archives = [
|
||||
# years apart
|
||||
MockArchive(datetime(2015, 1, 1, 10, 0, 0, tzinfo=timezone.utc), 1),
|
||||
MockArchive(datetime(2016, 1, 1, 10, 0, 0, tzinfo=timezone.utc), 2),
|
||||
MockArchive(datetime(2017, 1, 1, 10, 0, 0, tzinfo=timezone.utc), 3),
|
||||
MockArchive(datetime(2015, 1, 1, 10, 0, 0, tzinfo=local_tz), 1),
|
||||
MockArchive(datetime(2016, 1, 1, 10, 0, 0, tzinfo=local_tz), 2),
|
||||
MockArchive(datetime(2017, 1, 1, 10, 0, 0, tzinfo=local_tz), 3),
|
||||
# months apart
|
||||
MockArchive(datetime(2017, 2, 1, 10, 0, 0, tzinfo=timezone.utc), 4),
|
||||
MockArchive(datetime(2017, 3, 1, 10, 0, 0, tzinfo=timezone.utc), 5),
|
||||
MockArchive(datetime(2017, 2, 1, 10, 0, 0, tzinfo=local_tz), 4),
|
||||
MockArchive(datetime(2017, 3, 1, 10, 0, 0, tzinfo=local_tz), 5),
|
||||
# days apart
|
||||
MockArchive(datetime(2017, 3, 2, 10, 0, 0, tzinfo=timezone.utc), 6),
|
||||
MockArchive(datetime(2017, 3, 3, 10, 0, 0, tzinfo=timezone.utc), 7),
|
||||
MockArchive(datetime(2017, 3, 4, 10, 0, 0, tzinfo=timezone.utc), 8),
|
||||
MockArchive(datetime(2017, 3, 2, 10, 0, 0, tzinfo=local_tz), 6),
|
||||
MockArchive(datetime(2017, 3, 3, 10, 0, 0, tzinfo=local_tz), 7),
|
||||
MockArchive(datetime(2017, 3, 4, 10, 0, 0, tzinfo=local_tz), 8),
|
||||
# minutes apart
|
||||
MockArchive(datetime(2017, 10, 1, 9, 45, 0, tzinfo=timezone.utc), 9),
|
||||
MockArchive(datetime(2017, 10, 1, 9, 55, 0, tzinfo=timezone.utc), 10),
|
||||
MockArchive(datetime(2017, 10, 1, 9, 45, 0, tzinfo=local_tz), 9),
|
||||
MockArchive(datetime(2017, 10, 1, 9, 55, 0, tzinfo=local_tz), 10),
|
||||
# seconds apart
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 1, tzinfo=timezone.utc), 11),
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 3, tzinfo=timezone.utc), 12),
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 5, tzinfo=timezone.utc), 13),
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 1, tzinfo=local_tz), 11),
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 3, tzinfo=local_tz), 12),
|
||||
MockArchive(datetime(2017, 10, 1, 10, 0, 5, tzinfo=local_tz), 13),
|
||||
]
|
||||
kept_because = {}
|
||||
keep = prune_split(archives, rule, num_to_keep, kept_because)
|
||||
|
@ -456,12 +467,12 @@ def subset(lst, ids):
|
|||
|
||||
archives = [
|
||||
# oldest backup, but not last in its year
|
||||
MockArchive(datetime(2018, 1, 1, 10, 0, 0, tzinfo=timezone.utc), 1),
|
||||
MockArchive(datetime(2018, 1, 1, 10, 0, 0, tzinfo=local_tz), 1),
|
||||
# an interim backup
|
||||
MockArchive(datetime(2018, 12, 30, 10, 0, 0, tzinfo=timezone.utc), 2),
|
||||
MockArchive(datetime(2018, 12, 30, 10, 0, 0, tzinfo=local_tz), 2),
|
||||
# year end backups
|
||||
MockArchive(datetime(2018, 12, 31, 10, 0, 0, tzinfo=timezone.utc), 3),
|
||||
MockArchive(datetime(2019, 12, 31, 10, 0, 0, tzinfo=timezone.utc), 4),
|
||||
MockArchive(datetime(2018, 12, 31, 10, 0, 0, tzinfo=local_tz), 3),
|
||||
MockArchive(datetime(2019, 12, 31, 10, 0, 0, tzinfo=local_tz), 4),
|
||||
]
|
||||
|
||||
# Keep oldest when retention target can't otherwise be met
|
||||
|
|
Loading…
Reference in a new issue