diff --git a/swh/lister/phabricator/lister.py b/swh/lister/phabricator/lister.py --- a/swh/lister/phabricator/lister.py +++ b/swh/lister/phabricator/lister.py @@ -5,6 +5,7 @@ import logging import random from typing import Any, Dict, Iterator, List, Optional +from urllib.parse import urljoin import requests @@ -21,6 +22,7 @@ class PhabricatorLister(StatelessLister[PageType]): LISTER_NAME = "phabricator" + API_REPOSITORIES_PATH = "/api/diffusion.repository.search" def __init__( self, @@ -30,7 +32,9 @@ api_token: Optional[str] = None, credentials: CredentialsType = None, ): - super().__init__(scheduler, url, instance, credentials) + super().__init__( + scheduler, urljoin(url, self.API_REPOSITORIES_PATH), instance, credentials + ) self.session = requests.Session() self.session.headers.update( diff --git a/swh/lister/phabricator/tests/test_lister.py b/swh/lister/phabricator/tests/test_lister.py --- a/swh/lister/phabricator/tests/test_lister.py +++ b/swh/lister/phabricator/tests/test_lister.py @@ -6,7 +6,7 @@ import importlib.resources import json -from swh.lister.phabricator.lister import get_repo_url +from swh.lister.phabricator.lister import PhabricatorLister, get_repo_url def test_get_repo_url(): @@ -27,3 +27,23 @@ repo = json.load(f) expected_name = "https://svn.blender.org/svnroot/bf-blender/" assert get_repo_url(repo["attachments"]["uris"]["uris"]) == expected_name + + +def test_lister_url_param(swh_scheduler): + FORGE_BASE_URL = "https://forge.softwareheritage.org" + API_REPOSITORIES_PATH = "/api/diffusion.repository.search" + + for url in ( + FORGE_BASE_URL, + f"{FORGE_BASE_URL}/", + f"{FORGE_BASE_URL}/{API_REPOSITORIES_PATH}", + f"{FORGE_BASE_URL}/{API_REPOSITORIES_PATH}/", + ): + + lister = PhabricatorLister( + scheduler=swh_scheduler, url=FORGE_BASE_URL, instance="swh", api_token="foo" + ) + + expected_url = f"{FORGE_BASE_URL}{API_REPOSITORIES_PATH}" + + assert lister.url == expected_url diff --git a/swh/lister/phabricator/tests/test_tasks.py b/swh/lister/phabricator/tests/test_tasks.py --- a/swh/lister/phabricator/tests/test_tasks.py +++ b/swh/lister/phabricator/tests/test_tasks.py @@ -25,7 +25,7 @@ lister.run.return_value = lister_stats task_params = { - "url": "https://forge.softwareheritage.org/api/diffusion.repository.search", + "url": "https://forge.softwareheritage.org", "instance": "swh", "api_token": None, }