mirror of
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
synced 2025-07-13 11:29:46 +03:00
Replace "args.logfd" with "pmb.helpers.logging.logfd" in order to avoid passing "args" to all functions that only use it to write to logfd. This is the first step to get rid of this args-passed-to-all-functions pattern in pmbootstrap.
73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
# Copyright 2021 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
""" Test pmb.helpers.repo """
|
|
import pytest
|
|
import sys
|
|
|
|
import pmb_test # noqa
|
|
import pmb_test.const
|
|
import pmb.helpers.repo
|
|
|
|
|
|
@pytest.fixture
|
|
def args(tmpdir, request):
|
|
import pmb.parse
|
|
cfg = f"{pmb_test.const.testdata}/channels.cfg"
|
|
sys.argv = ["pmbootstrap.py", "--config-channels", cfg, "chroot"]
|
|
args = pmb.parse.arguments()
|
|
args.log = args.work + "/log_testsuite.txt"
|
|
pmb.helpers.logging.init(args)
|
|
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
|
return args
|
|
|
|
|
|
def test_hash():
|
|
url = "https://nl.alpinelinux.org/alpine/edge/testing"
|
|
hash = "865a153c"
|
|
assert pmb.helpers.repo.hash(url, 8) == hash
|
|
|
|
|
|
def test_alpine_apkindex_path(args):
|
|
func = pmb.helpers.repo.alpine_apkindex_path
|
|
args.mirror_alpine = "http://dl-cdn.alpinelinux.org/alpine/"
|
|
ret = args.work + "/cache_apk_armhf/APKINDEX.30e6f5af.tar.gz"
|
|
assert func(args, "testing", "armhf") == ret
|
|
|
|
|
|
def test_urls(args, monkeypatch):
|
|
func = pmb.helpers.repo.urls
|
|
channel = "v20.05"
|
|
args.mirror_alpine = "http://localhost/alpine/"
|
|
|
|
# Second mirror with /master at the end is legacy, gets fixed by func.
|
|
# Note that bpo uses multiple postmarketOS mirrors at the same time, so it
|
|
# can use its WIP repository together with the final repository.
|
|
args.mirrors_postmarketos = ["http://localhost/pmos1/",
|
|
"http://localhost/pmos2/master"]
|
|
|
|
# Pretend to have a certain channel in pmaports.cfg
|
|
def read_config(args):
|
|
return {"channel": channel}
|
|
monkeypatch.setattr(pmb.config.pmaports, "read_config", read_config)
|
|
|
|
# Channel: v20.05
|
|
assert func(args) == ["/mnt/pmbootstrap-packages",
|
|
"http://localhost/pmos1/v20.05",
|
|
"http://localhost/pmos2/v20.05",
|
|
"http://localhost/alpine/v3.11/main",
|
|
"http://localhost/alpine/v3.11/community"]
|
|
|
|
# Channel: edge (has Alpine's testing)
|
|
channel = "edge"
|
|
assert func(args) == ["/mnt/pmbootstrap-packages",
|
|
"http://localhost/pmos1/master",
|
|
"http://localhost/pmos2/master",
|
|
"http://localhost/alpine/edge/main",
|
|
"http://localhost/alpine/edge/community",
|
|
"http://localhost/alpine/edge/testing"]
|
|
|
|
# Only Alpine's URLs
|
|
exp = ["http://localhost/alpine/edge/main",
|
|
"http://localhost/alpine/edge/community",
|
|
"http://localhost/alpine/edge/testing"]
|
|
assert func(args, False, False) == exp
|