Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/tests/test_origin_iterator.py
# Copyright (C) 2021 The Software Heritage developers | # Copyright (C) 2021 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from swh.model.model import OriginVisitStatus | |||||
from swh.model.tests.swh_model_data import TEST_OBJECTS | from swh.model.tests.swh_model_data import TEST_OBJECTS | ||||
from swh.provenance.origin import CSVOriginIterator | from swh.provenance.origin import CSVOriginIterator | ||||
from swh.storage.algos.origin import ( | from swh.storage.algos.origin import ( | ||||
iter_origin_visit_statuses, | iter_origin_visit_statuses, | ||||
iter_origin_visits, | iter_origin_visits, | ||||
iter_origins, | iter_origins, | ||||
) | ) | ||||
from swh.storage.postgresql.storage import Storage | |||||
def test_origin_iterator(swh_storage_with_objects): | def test_origin_iterator(swh_storage_with_objects: Storage) -> None: | ||||
"""Test CSVOriginIterator""" | """Test CSVOriginIterator""" | ||||
origins_csv = [] | origins_csv = [] | ||||
for origin in iter_origins(swh_storage_with_objects): | for origin in iter_origins(swh_storage_with_objects): | ||||
for visit in iter_origin_visits(swh_storage_with_objects, origin.url): | for visit in iter_origin_visits(swh_storage_with_objects, origin.url): | ||||
if visit.visit is not None: | |||||
vlorentz: I think you should assert instead; there is no reason for it to be None | |||||
aevisoAuthorUnsubmitted Done Inline ActionsGood point, I don't really know the reason behind this being an optional value but what I'm doing here is just mimic how we iterate OriginRevisionStatuses in our Archive classes. The point is that i don't want the test to fail is visit.visit is None, I just want this visit to be ignored. aeviso: Good point, I don't really know the reason behind this being an optional value but what I'm… | |||||
for status in iter_origin_visit_statuses( | for status in iter_origin_visit_statuses( | ||||
swh_storage_with_objects, origin.url, visit.visit | swh_storage_with_objects, origin.url, visit.visit | ||||
): | ): | ||||
if status.snapshot is not None: | if status.snapshot is not None: | ||||
origins_csv.append((status.origin, status.snapshot)) | origins_csv.append((status.origin, status.snapshot)) | ||||
origins = list(CSVOriginIterator(origins_csv)) | origins = list(CSVOriginIterator(origins_csv)) | ||||
assert origins | assert origins | ||||
assert len(origins) == len( | assert len(origins) == len( | ||||
list( | list( | ||||
{ | { | ||||
status.origin | status.origin | ||||
for status in TEST_OBJECTS["origin_visit_status"] | for status in TEST_OBJECTS["origin_visit_status"] | ||||
if status.snapshot is not None | if isinstance(status, OriginVisitStatus) and status.snapshot is not None | ||||
} | } | ||||
) | ) | ||||
) | ) |
I think you should assert instead; there is no reason for it to be None