cran.lister: Align loading tasks' with loader's expectation

This commit is contained in:
Antoine R. Dumont (@ardumont) 2020-01-09 10:03:02 +01:00
parent 3f3f714c62
commit e1069f0c59
No known key found for this signature in database
GPG key ID: 52E2E9840D10C3B8
3 changed files with 29 additions and 22 deletions

View file

@ -33,13 +33,11 @@ class CRANLister(SimpleLister):
"""
policy = kwargs.get('policy', 'oneshot')
package = kwargs.get('name')
version = kwargs.get('version')
assert origin_type == 'tar'
return create_task_dict(
'load-archive-files',
policy, package, origin_url, version,
retries_left=3,
'load-cran', policy,
url=origin_url, version=version, retries_left=3
)
def safely_issue_request(self, identifier):

View file

@ -1,6 +1,23 @@
# Copyright (C) 2019 The Software Heritage developers
# Copyright (C) 2019-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
import pytest
from swh.lister.core.tests.conftest import * # noqa
@pytest.fixture
def lister_cran(swh_listers):
lister = swh_listers['cran']
# Add the load-deb-package in the scheduler backend
lister.scheduler.create_task_type({
'type': 'load-cran',
'description': 'Load a CRAN package',
'backend_name': 'swh.loader.package.cran.tasks.LoaderCRAN',
'default_interval': '1 day',
})
return lister

View file

@ -1,4 +1,4 @@
# Copyright (C) 2019 The Software Heritage developers
# Copyright (C) 2019-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
@ -28,8 +28,8 @@ def test_cran_compute_package_url_failure():
@patch('swh.lister.cran.lister.read_cran_data')
def test_cran_lister_cran(mock_cran, datadir, swh_listers):
lister = swh_listers['cran']
def test_cran_lister_cran(mock_cran, datadir, lister_cran):
lister = lister_cran
with open(path.join(datadir, 'list-r-packages.json')) as f:
data = json.loads(f.read())
@ -39,27 +39,19 @@ def test_cran_lister_cran(mock_cran, datadir, swh_listers):
lister.run()
r = lister.scheduler.search_tasks(task_type='load-archive-files')
r = lister.scheduler.search_tasks(task_type='load-cran')
assert len(r) == 6
for row in r:
assert row['type'] == 'load-archive-files'
assert row['type'] == 'load-cran'
# arguments check
args = row['arguments']['args']
assert len(args) == 3
# ['SeleMix',
# 'https://cran.r-project.org/src/contrib/SeleMix_1.0.1.tar.gz',
# '1.0.1']
package = args[0]
url = args[1]
version = args[2]
assert url == compute_package_url(
{'Package': package, 'Version': version})
assert len(args) == 0
# kwargs
kwargs = row['arguments']['kwargs']
assert kwargs == {}
assert len(kwargs) == 2
assert set(kwargs.keys()) == {'url', 'version'}
assert row['policy'] == 'oneshot'
assert row['retries_left'] == 3