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 @@ -507,12 +507,11 @@ Yields: dicts with the same keys as those given to `release_add` - - Raises: - ValueError: if the keys does not match (url and type) nor id. + (or ``None`` if a release does not exist) """ - yield from map(self._releases.__getitem__, releases) + for rel_id in releases: + yield copy.deepcopy(self._releases.get(rel_id)) def snapshot_add(self, origin, visit, snapshot): """Add a snapshot for the given origin/visit couple diff --git a/swh/storage/storage.py b/swh/storage/storage.py --- a/swh/storage/storage.py +++ b/swh/storage/storage.py @@ -720,15 +720,14 @@ Yields: dicts with the same keys as those given to `release_add` - - Raises: - ValueError: if the keys does not match (url and type) nor id. + (or ``None`` if a release does not exist) """ for release in db.release_get_from_list(releases, cur): - yield converters.db_to_release( + data = converters.db_to_release( dict(zip(db.release_get_cols, release)) ) + yield data if data['target_type'] else None @db_transaction() def snapshot_add(self, origin, visit, snapshot, 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 @@ -908,6 +908,11 @@ self.normalize_entity(self.release2)], [actual_releases[0], actual_releases[1]]) + unknown_releases = \ + list(self.storage.release_get([self.release3['id']])) + + self.assertIsNone(unknown_releases[0]) + def test_origin_add_one(self): origin0 = self.storage.origin_get(self.origin) self.assertIsNone(origin0)