diff --git a/swh/loader/package/deposit/loader.py b/swh/loader/package/deposit/loader.py --- a/swh/loader/package/deposit/loader.py +++ b/swh/loader/package/deposit/loader.py @@ -117,6 +117,7 @@ deposit_id: str, deposit_client: "ApiClient", max_content_size: Optional[int] = None, + default_filename: str = "archive.zip", ): """Constructor @@ -130,6 +131,7 @@ self.deposit_id = deposit_id self.client = deposit_client + self.default_filename = default_filename @classmethod def from_configfile(cls, **kwargs: Any): @@ -173,7 +175,7 @@ self, version: str ) -> Iterator[Tuple[str, DepositPackageInfo]]: p_info = DepositPackageInfo.from_metadata( - self.metadata(), url=self.url, filename="archive.zip", + self.metadata(), url=self.url, filename=self.default_filename, ) yield "HEAD", p_info diff --git a/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_meta b/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_meta new file mode 120000 --- /dev/null +++ b/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_meta @@ -0,0 +1 @@ +hello_2.12.json \ No newline at end of file diff --git a/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_raw b/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_raw new file mode 120000 --- /dev/null +++ b/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/1_private_888_raw @@ -0,0 +1 @@ +hello-2.12.tar.gz \ No newline at end of file diff --git a/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/hello-2.12.tar.gz b/swh/loader/package/deposit/tests/data/https_deposit.softwareheritage.org/hello-2.12.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@some-external-idhttps://hal-test.archives-ouvertes.fr/some-external-id2017-10-07T15:17:08Zsome awesome authoranother oneno one", +"someone" + ], + "metadata_dict": { + "author": [ + "some awesome author", + "another one", + "no one" + ], + "codemeta:dateCreated": "2017-10-07T15:17:08Z", + "codemeta:datePublished": "2017-10-08T15:00:00Z", + "external_identifier": "some-external-id", + "url": "https://hal-test.archives-ouvertes.fr/some-external-id" + }, + "provider": { + "provider_name": "hal", + "provider_type": "deposit_client", + "provider_url": "https://hal-test.archives-ouvertes.fr/", + "metadata": null + }, + "tool": { + "name": "swh-deposit", + "version": "0.0.1", + "configuration": { + "sword_version": "2" + } + }, + "deposit": { + "id": 888, + "client": "hal", + "collection": "hal", + "author": { + "name": "Software Heritage", + "fullname": "Software Heritage", + "email": "robot@softwareheritage.org" + }, + "author_date": { + "timestamp": { + "seconds": 1507389428, + "microseconds": 0 + }, + "offset": 0, + "negative_utc": false + }, + "committer": { + "name": "Software Heritage", + "fullname": "Software Heritage", + "email": "robot@softwareheritage.org" + }, + "committer_date": { + "timestamp": { + "seconds": 1507474800, + "microseconds": 0 + }, + "offset": 0, + "negative_utc": false + }, + "revision_parents": [] + } +} diff --git a/swh/loader/package/deposit/tests/test_deposit.py b/swh/loader/package/deposit/tests/test_deposit.py --- a/swh/loader/package/deposit/tests/test_deposit.py +++ b/swh/loader/package/deposit/tests/test_deposit.py @@ -466,3 +466,26 @@ } assert body == expected_body + + +def test_deposit_loading_ok_3(swh_storage, deposit_client, requests_mock_datadir): + """Deposit loading can happen on tarball artifacts as well + + The latest deposit changes introduce the internal change. + + """ + external_id = "hal-123456" + url = f"https://hal-test.archives-ouvertes.fr/{external_id}" + deposit_id = 888 + loader = DepositLoader( + swh_storage, url, deposit_id, deposit_client, default_filename="archive.tar" + ) + + actual_load_status = loader.load() + expected_snapshot_id = "0ac7b54c042a026389f2087dc16f1d5c644ed0e4" + + assert actual_load_status == { + "status": "eventful", + "snapshot_id": expected_snapshot_id, + } + assert_last_visit_matches(loader.storage, url, status="full", type="deposit")