diff --git a/swh/lister/bitbucket/lister.py b/swh/lister/bitbucket/lister.py --- a/swh/lister/bitbucket/lister.py +++ b/swh/lister/bitbucket/lister.py @@ -7,9 +7,11 @@ import iso8601 from datetime import datetime, timezone -from typing import Any +from typing import Any, Mapping from urllib import parse + +from swh.scheduler import utils from swh.lister.bitbucket.models import BitBucketModel from swh.lister.core.indexing_lister import IndexingHttpLister @@ -32,6 +34,25 @@ self.PATH_TEMPLATE = '%s&pagelen=%s' % ( self.PATH_TEMPLATE, per_page) + def task_dict(self, origin_type: str, + origin_url: str, **kwargs) -> Mapping[str, Any]: + """Return special dict format for the tasks list + + Args: + origin_type: Origin's type (git, hg, etc...) + origin_url: Origin's identifier url + + Returns: + a scheduler task dict to send to the scheduler + + """ + if origin_type != 'hg': + return super().task_dict(origin_type, origin_url, **kwargs) + policy = kwargs.get('policy', 'recurring') + priority = kwargs.get('priority') + kw = {'priority': priority} if priority else {} + return utils.create_task_dict('load-hg', policy, url=origin_url, **kw) + def get_model_from_repo(self, repo): return { 'uid': repo['uuid'], diff --git a/swh/lister/bitbucket/tests/data/https_api.bitbucket.org/2.0_repositories,after=1970-01-01T00:00:00+00:00,pagelen=100 b/swh/lister/bitbucket/tests/data/https_api.bitbucket.org/2.0_repositories,after=1970-01-01T00:00:00+00:00,pagelen=100 --- a/swh/lister/bitbucket/tests/data/https_api.bitbucket.org/2.0_repositories,after=1970-01-01T00:00:00+00:00,pagelen=100 +++ b/swh/lister/bitbucket/tests/data/https_api.bitbucket.org/2.0_repositories,after=1970-01-01T00:00:00+00:00,pagelen=100 @@ -82,7 +82,7 @@ "description": "Basic files and directory structure for a C++ project. Intended as a starting point for a new project. Includes a basic cross platform core library." }, { - "scm": "hg", + "scm": "git", "website": "", "has_wiki": true, "name": "mercurialeclipse", diff --git a/swh/lister/bitbucket/tests/test_lister.py b/swh/lister/bitbucket/tests/test_lister.py --- a/swh/lister/bitbucket/tests/test_lister.py +++ b/swh/lister/bitbucket/tests/test_lister.py @@ -74,7 +74,7 @@ def test_lister_bitbucket(swh_listers, requests_mock_datadir): - """Simple bitbucket listing should create scheduled tasks + """Simple bitbucket listing should create scheduled tasks (git, hg) """ lister = swh_listers['bitbucket'] @@ -82,20 +82,32 @@ lister.run() r = lister.scheduler.search_tasks(task_type='load-hg') - assert len(r) == 10 + assert len(r) == 9 for row in r: - assert row['type'] == 'load-hg' - # arguments check args = row['arguments']['args'] - assert len(args) == 1 + kwargs = row['arguments']['kwargs'] + + assert len(args) == 0 + assert len(kwargs) == 1 + url = kwargs['url'] - url = args[0] assert url.startswith('https://bitbucket.org') - # kwargs + assert row['policy'] == 'recurring' + assert row['priority'] is None + + r = lister.scheduler.search_tasks(task_type='load-git') + assert len(r) == 1 + + for row in r: + args = row['arguments']['args'] kwargs = row['arguments']['kwargs'] + assert len(args) == 1 + url = args[0] assert kwargs == {} + assert url.startswith('https://bitbucket.org') + assert row['policy'] == 'recurring' assert row['priority'] is None