Page MenuHomeSoftware Heritage

D4863.diff
No OneTemporary

D4863.diff

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
@@ -20,7 +21,18 @@
class PhabricatorLister(StatelessLister[PageType]):
+ """
+ List all repositories hosted on a Phabricator instance.
+
+ Args:
+ url: base URL of a phabricator forge
+ (for instance https://forge.softwareheritage.org)
+ instance: string identifier for the listed forge
+ api_token: authentication token for Conduit API
+ """
+
LISTER_NAME = "phabricator"
+ API_REPOSITORY_PATH = "/api/diffusion.repository.search"
def __init__(
self,
@@ -30,7 +42,9 @@
api_token: Optional[str] = None,
credentials: CredentialsType = None,
):
- super().__init__(scheduler, url, instance, credentials)
+ super().__init__(
+ scheduler, urljoin(url, self.API_REPOSITORY_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_REPOSITORY_PATH = "/api/diffusion.repository.search"
+
+ for url in (
+ FORGE_BASE_URL,
+ f"{FORGE_BASE_URL}/",
+ f"{FORGE_BASE_URL}/{API_REPOSITORY_PATH}",
+ f"{FORGE_BASE_URL}/{API_REPOSITORY_PATH}/",
+ ):
+
+ lister = PhabricatorLister(
+ scheduler=swh_scheduler, url=FORGE_BASE_URL, instance="swh", api_token="foo"
+ )
+
+ expected_url = f"{FORGE_BASE_URL}{API_REPOSITORY_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,
}

File Metadata

Mime Type
text/plain
Expires
Jul 27 2024, 11:30 AM (11 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3224192

Event Timeline