Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/tests/migrate_extrinsic_metadata/test_cran.py
- This file was added.
# Copyright (C) 2020 The Software Heritage developers | |||||
# See the AUTHORS file at the top-level directory of this distribution | |||||
# License: GNU General Public License version 3, or any later version | |||||
# See top-level LICENSE file for more information | |||||
# flake8: noqa | |||||
# because of long lines | |||||
import datetime | |||||
import json | |||||
from unittest.mock import call, Mock | |||||
from swh.model.identifiers import parse_swhid | |||||
from swh.model.model import ( | |||||
MetadataAuthority, | |||||
MetadataAuthorityType, | |||||
MetadataFetcher, | |||||
MetadataTargetType, | |||||
Origin, | |||||
RawExtrinsicMetadata, | |||||
) | |||||
from swh.storage.migrate_extrinsic_metadata import handle_row | |||||
FETCHER = MetadataFetcher( | |||||
name="migrate-extrinsic-metadata-from-revisions", version="0.0.1", | |||||
) | |||||
SWH_AUTHORITY = MetadataAuthority( | |||||
type=MetadataAuthorityType.REGISTRY, | |||||
url="https://softwareheritage.org/", | |||||
metadata={}, | |||||
) | |||||
def test_cran(): | |||||
original_artifact = [ | |||||
{ | |||||
"length": 8018, | |||||
"filename": "gofgamma_1.0.tar.gz", | |||||
"checksums": { | |||||
"sha1": "58f2993140f9e9e1a136554f0af0174a252f2c7b", | |||||
"sha256": "55408f004642b5043bb01de831a7e7a0b9f24a30cb0151e70c2d37abdc508d03", | |||||
}, | |||||
} | |||||
] | |||||
row = { | |||||
"id": b'\x00\x00\xd4\xef^\x16a"\xae\xe6\x86*\xd3\x8a\x18\xceS\x86\xcc>', | |||||
"date": None, | |||||
"committer_date": None, | |||||
"type": "tar", | |||||
"message": b"1.0", | |||||
"metadata": { | |||||
"extrinsic": { | |||||
"raw": { | |||||
"url": "https://cran.r-project.org/src/contrib/gofgamma_1.0.tar.gz", | |||||
"version": "1.0", | |||||
}, | |||||
"when": "2020-04-30T11:01:57.832481+00:00", | |||||
"provider": "https://cran.r-project.org/package=gofgamma", | |||||
}, | |||||
"intrinsic": { | |||||
"raw": { | |||||
"Type": "Package", | |||||
"Title": "Goodness-of-Fit Tests for the Gamma Distribution", | |||||
"Author": "Lucas Butsch [aut],\n Bruno Ebner [aut, cre],\n Steffen Betsch [aut]", | |||||
# ... | |||||
}, | |||||
"tool": "DESCRIPTION", | |||||
}, | |||||
"original_artifact": original_artifact, | |||||
}, | |||||
} | |||||
origin_url = "https://cran.r-project.org/package=gofgamma" | |||||
storage = Mock() | |||||
def origin_get(urls): | |||||
assert urls == [origin_url] | |||||
return [Origin(url=origin_url)] | |||||
storage.origin_get.side_effect = origin_get | |||||
deposit_cur = None | |||||
handle_row(row, storage, deposit_cur, dry_run=False) | |||||
assert storage.method_calls == [ | |||||
call.origin_get([origin_url]), | |||||
call.raw_extrinsic_metadata_add( | |||||
[ | |||||
RawExtrinsicMetadata( | |||||
type=MetadataTargetType.REVISION, | |||||
id=parse_swhid( | |||||
"swh:1:rev:0000d4ef5e166122aee6862ad38a18ce5386cc3e" | |||||
), | |||||
discovery_date=datetime.datetime( | |||||
2020, 4, 30, 11, 1, 57, 832481, tzinfo=datetime.timezone.utc, | |||||
), | |||||
authority=SWH_AUTHORITY, | |||||
fetcher=FETCHER, | |||||
format="original-artifact-json", | |||||
metadata=json.dumps(original_artifact).encode(), | |||||
origin=origin_url, | |||||
), | |||||
] | |||||
), | |||||
] |