66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
# Copyright 2022 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
import pytest
|
|
import sys
|
|
|
|
import pmb_test # noqa
|
|
import pmb.chroot.apk
|
|
|
|
|
|
@pytest.fixture
|
|
def args(tmpdir, request):
|
|
import pmb.parse
|
|
sys.argv = ["pmbootstrap.py", "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_install_build(monkeypatch, args):
|
|
func = pmb.chroot.apk.install_build
|
|
ret_apkindex_package = None
|
|
|
|
def fake_build_package(args, package, arch):
|
|
return "build-pkg"
|
|
monkeypatch.setattr(pmb.build, "package", fake_build_package)
|
|
|
|
def fake_apkindex_package(args, package, arch, must_exist):
|
|
return ret_apkindex_package
|
|
monkeypatch.setattr(pmb.parse.apkindex, "package", fake_apkindex_package)
|
|
|
|
package = "hello-world"
|
|
arch = "x86_64"
|
|
|
|
# invoked as pmb install, build_pkgs_on_install disabled
|
|
args.action = "install"
|
|
args.build_pkgs_on_install = False
|
|
with pytest.raises(RuntimeError) as e:
|
|
func(args, package, arch)
|
|
assert "no binary package found" in str(e.value)
|
|
|
|
# invoked as pmb install, build_pkgs_on_install disabled, binary exists
|
|
args.action = "install"
|
|
args.build_pkgs_on_install = False
|
|
ret_apkindex_package = {"pkgname": "hello-world"}
|
|
assert func(args, package, arch) is None
|
|
|
|
# invoked as pmb install, build_pkgs_on_install enabled
|
|
args.action = "install"
|
|
args.build_pkgs_on_install = True
|
|
assert func(args, package, arch) == "build-pkg"
|
|
|
|
# invoked as not pmb install
|
|
args.action = "chroot"
|
|
args.build_pkgs_on_install = False
|
|
assert func(args, package, arch) == "build-pkg"
|
|
|
|
|
|
def test_packages_split_to_add_del():
|
|
packages = ["hello", "!test", "hello2", "test2", "!test3"]
|
|
|
|
to_add, to_del = pmb.chroot.apk.packages_split_to_add_del(packages)
|
|
assert to_add == ["hello", "hello2", "test2"]
|
|
assert to_del == ["test", "test3"]
|