opam: Allow defining where to actually install the opam_root folder
Related to T3590
This commit is contained in:
parent
ff5e86ff48
commit
332ed8e543
2 changed files with 17 additions and 5 deletions
|
@ -7,7 +7,6 @@ import io
|
|||
import logging
|
||||
import os
|
||||
from subprocess import PIPE, Popen, call
|
||||
import tempfile
|
||||
from typing import Iterator, Optional
|
||||
|
||||
from swh.lister.pattern import StatelessLister
|
||||
|
@ -46,6 +45,7 @@ class OpamLister(StatelessLister[PageType]):
|
|||
url: str,
|
||||
instance: Optional[str] = None,
|
||||
credentials: CredentialsType = None,
|
||||
opam_root: str = "/tmp/opam/",
|
||||
):
|
||||
super().__init__(
|
||||
scheduler=scheduler, credentials=credentials, url=url, instance=instance,
|
||||
|
@ -53,7 +53,7 @@ class OpamLister(StatelessLister[PageType]):
|
|||
self.env = os.environ.copy()
|
||||
# Opam root folder is initialized in the :meth:`get_pages` method as no
|
||||
# side-effect should happen in the constructor to ease instantiation
|
||||
self.opamroot = tempfile.mkdtemp(prefix="swh_opam_lister")
|
||||
self.opamroot = os.path.join(opam_root, self.instance)
|
||||
|
||||
def get_pages(self) -> Iterator[PageType]:
|
||||
# Initialize the opam root directory with the opam instance data to list.
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
# See top-level LICENSE file for more information
|
||||
|
||||
import io
|
||||
from tempfile import mkdtemp
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
@ -33,8 +34,9 @@ def test_lister_opam_optional_instance(swh_scheduler):
|
|||
netloc = "opam.ocaml.org"
|
||||
instance_url = f"https://{netloc}"
|
||||
|
||||
lister = OpamLister(swh_scheduler, url=instance_url)
|
||||
lister = OpamLister(swh_scheduler, url=instance_url,)
|
||||
assert lister.instance == netloc
|
||||
assert lister.opamroot.endswith(lister.instance)
|
||||
|
||||
|
||||
def test_urls(swh_scheduler, mock_opam):
|
||||
|
@ -42,7 +44,12 @@ def test_urls(swh_scheduler, mock_opam):
|
|||
|
||||
instance_url = "https://opam.ocaml.org"
|
||||
|
||||
lister = OpamLister(swh_scheduler, url=instance_url, instance="opam")
|
||||
lister = OpamLister(
|
||||
swh_scheduler,
|
||||
url=instance_url,
|
||||
instance="opam",
|
||||
opam_root=mkdtemp(prefix="swh_opam_lister"),
|
||||
)
|
||||
assert lister.instance == "opam"
|
||||
|
||||
# call the lister and get all listed origins urls
|
||||
|
@ -70,7 +77,12 @@ def test_urls(swh_scheduler, mock_opam):
|
|||
def test_opam_binary(datadir, swh_scheduler):
|
||||
instance_url = f"file://{datadir}/fake_opam_repo"
|
||||
|
||||
lister = OpamLister(swh_scheduler, url=instance_url, instance="fake")
|
||||
lister = OpamLister(
|
||||
swh_scheduler,
|
||||
url=instance_url,
|
||||
instance="fake",
|
||||
opam_root=mkdtemp(prefix="swh_opam_lister"),
|
||||
)
|
||||
|
||||
stats = lister.run()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue