mirror of
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
synced 2025-07-13 19:39:51 +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.3 KiB
Python
73 lines
2.3 KiB
Python
# Copyright 2021 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
""" Test pmb/config/pmaports.py """
|
|
import pytest
|
|
import sys
|
|
|
|
import pmb_test
|
|
import pmb_test.const
|
|
import pmb_test.git
|
|
import pmb.config
|
|
import pmb.config.workdir
|
|
import pmb.config.pmaports
|
|
|
|
|
|
@pytest.fixture
|
|
def args(request):
|
|
import pmb.parse
|
|
cfg = f"{pmb_test.const.testdata}/channels.cfg"
|
|
sys.argv = ["pmbootstrap.py", "--config-channels", cfg, "init"]
|
|
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_switch_to_channel_branch(args, monkeypatch, tmpdir):
|
|
path, run_git = pmb_test.git.prepare_tmpdir(args, monkeypatch, tmpdir)
|
|
args.aports = path
|
|
|
|
# Pretend to have channel=edge in pmaports.cfg
|
|
def read_config(args):
|
|
return {"channel": "edge"}
|
|
monkeypatch.setattr(pmb.config.pmaports, "read_config", read_config)
|
|
|
|
# Success: Channel does not change
|
|
func = pmb.config.pmaports.switch_to_channel_branch
|
|
assert func(args, "edge") is False
|
|
|
|
# Fail: git error (could be any error, but here: branch does not exist)
|
|
with pytest.raises(RuntimeError) as e:
|
|
func(args, "v20.05")
|
|
assert str(e.value).startswith("Failed to switch branch")
|
|
|
|
# Success: switch channel and change branch
|
|
run_git(["checkout", "-b", "v20.05"])
|
|
run_git(["checkout", "master"])
|
|
assert func(args, "v20.05") is True
|
|
branch = pmb.helpers.git.rev_parse(args, path, extra_args=["--abbrev-ref"])
|
|
assert branch == "v20.05"
|
|
|
|
|
|
def test_read_config_channel(args, monkeypatch):
|
|
channel = "edge"
|
|
|
|
# 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 found
|
|
func = pmb.config.pmaports.read_config_channel
|
|
exp = {"description": "Rolling release channel",
|
|
"branch_pmaports": "master",
|
|
"branch_aports": "master",
|
|
"mirrordir_alpine": "edge"}
|
|
assert func(args) == exp
|
|
|
|
# Channel not found
|
|
channel = "non-existing"
|
|
with pytest.raises(RuntimeError) as e:
|
|
func(args)
|
|
assert "channel was not found in channels.cfg" in str(e.value)
|