diff --git a/swh/storage/in_memory.py b/swh/storage/in_memory.py --- a/swh/storage/in_memory.py +++ b/swh/storage/in_memory.py @@ -1250,6 +1250,11 @@ snapshot (sha1_git): identifier of the snapshot to add to the visit """ + visits = copy.deepcopy(visits) + for visit in visits: + if isinstance(visit['date'], str): + visit['date'] = dateutil.parser.parse(visit['date']) + if self.journal_writer: for visit in visits: visit = visit.copy() @@ -1260,8 +1265,6 @@ for visit in visits: origin_id = visit['origin'] visit_id = visit['visit'] - if isinstance(visit['date'], str): - visit['date'] = dateutil.parser.parse(visit['date']) while len(self._origin_visits[origin_id-1]) < visit_id: self._origin_visits[origin_id-1].append(None) visit = self._origin_visits[origin_id-1][visit_id-1] = visit diff --git a/swh/storage/storage.py b/swh/storage/storage.py --- a/swh/storage/storage.py +++ b/swh/storage/storage.py @@ -1257,6 +1257,11 @@ snapshot (sha1_git): identifier of the snapshot to add to the visit """ + visits = copy.deepcopy(visits) + for visit in visits: + if isinstance(visit['date'], str): + visit['date'] = dateutil.parser.parse(visit['date']) + if self.journal_writer: for visit in visits: visit = visit.copy() diff --git a/swh/storage/tests/test_storage.py b/swh/storage/tests/test_storage.py --- a/swh/storage/tests/test_storage.py +++ b/swh/storage/tests/test_storage.py @@ -1664,29 +1664,48 @@ self.assertIsNotNone(origin_id) # when - self.storage.origin_visit_upsert([{ - 'origin': origin_id, - 'date': self.date_visit2, - 'visit': 123, - 'status': 'full', - 'metadata': None, - 'snapshot': None, - }]) + self.storage.origin_visit_upsert([ + { + 'origin': origin_id, + 'date': self.date_visit2, + 'visit': 123, + 'status': 'full', + 'metadata': None, + 'snapshot': None, + }, + { + 'origin': origin_id, + 'date': '2018-01-01 23:00:00+00', + 'visit': 1234, + 'status': 'full', + 'metadata': None, + 'snapshot': None, + }, + ]) # then actual_origin_visits = list(self.storage.origin_visit_get(origin_id)) - self.assertEqual(actual_origin_visits, - [{ - 'origin': origin_id, - 'date': self.date_visit2, - 'visit': 123, - 'status': 'full', - 'metadata': None, - 'snapshot': None, - }]) + self.assertEqual(actual_origin_visits, [ + { + 'origin': origin_id, + 'date': self.date_visit2, + 'visit': 123, + 'status': 'full', + 'metadata': None, + 'snapshot': None, + }, + { + 'origin': origin_id, + 'date': self.date_visit3, + 'visit': 1234, + 'status': 'full', + 'metadata': None, + 'snapshot': None, + }, + ]) expected_origin = self.origin2.copy() - data = { + data1 = { 'origin': expected_origin, 'date': self.date_visit2, 'visit': 123, @@ -1694,9 +1713,18 @@ 'metadata': None, 'snapshot': None, } + data2 = { + 'origin': expected_origin, + 'date': self.date_visit3, + 'visit': 1234, + 'status': 'full', + 'metadata': None, + 'snapshot': None, + } self.assertEqual(list(self.journal_writer.objects), [('origin', expected_origin), - ('origin_visit', data)]) + ('origin_visit', data1), + ('origin_visit', data2)]) def test_origin_visit_upsert_existing(self): # given