forked from Mirror/pmbootstrap
WIP: test: type annotate suffix + pathlib (MR 2252)
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
This commit is contained in:
parent
9301412f90
commit
3bfc6474bb
38 changed files with 164 additions and 128 deletions
|
@ -3,6 +3,7 @@
|
|||
""" Common code for git tests """
|
||||
import os
|
||||
|
||||
from pmb.core.types import PmbArgs
|
||||
import pmb.helpers.git
|
||||
import pmb.helpers.run
|
||||
import shutil
|
||||
|
|
|
@ -7,7 +7,7 @@ import sys
|
|||
import pmb_test # noqa
|
||||
import pmb.build
|
||||
import pmb.chroot.apk
|
||||
from pmb.core import Suffix
|
||||
from pmb.core import Chroot
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -15,7 +15,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -89,7 +89,7 @@ def test_install_run_apk(monkeypatch, args):
|
|||
global cmds
|
||||
|
||||
func = pmb.chroot.apk.install_run_apk
|
||||
suffix = Suffix.native()
|
||||
suffix = Chroot.native()
|
||||
|
||||
def fake_chroot_root(args: PmbArgs, command, suffix):
|
||||
global cmds
|
||||
|
|
|
@ -12,6 +12,7 @@ import pmb.chroot.apk_static
|
|||
import pmb.config
|
||||
import pmb.parse.apkindex
|
||||
import pmb.helpers.logging
|
||||
from pmb.core.types import PmbArgs
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -19,16 +20,16 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_read_signature_info(args):
|
||||
def test_read_signature_info(args: PmbArgs):
|
||||
# Tempfolder inside chroot for fake apk files
|
||||
tmp_path = "/tmp/test_read_signature_info"
|
||||
tmp_path_outside = args.work + "/chroot_native" + tmp_path
|
||||
tmp_path_outside = pmb.config.work / "chroot_native" + tmp_path
|
||||
if os.path.exists(tmp_path_outside):
|
||||
pmb.chroot.root(args, ["rm", "-r", tmp_path])
|
||||
pmb.chroot.user(args, ["mkdir", "-p", tmp_path])
|
||||
|
@ -74,17 +75,17 @@ def test_read_signature_info(args):
|
|||
|
||||
|
||||
def test_successful_extraction(args: PmbArgs, tmpdir):
|
||||
if os.path.exists(args.work + "/apk.static"):
|
||||
os.remove(args.work + "/apk.static")
|
||||
if os.path.exists(pmb.config.work / "apk.static"):
|
||||
os.remove(pmb.config.work / "apk.static")
|
||||
|
||||
pmb.chroot.apk_static.init(args)
|
||||
assert os.path.exists(args.work + "/apk.static")
|
||||
os.remove(args.work + "/apk.static")
|
||||
assert os.path.exists(pmb.config.work / "apk.static")
|
||||
os.remove(pmb.config.work / "apk.static")
|
||||
|
||||
|
||||
def test_signature_verification(args: PmbArgs, tmpdir):
|
||||
if os.path.exists(args.work + "/apk.static"):
|
||||
os.remove(args.work + "/apk.static")
|
||||
if os.path.exists(pmb.config.work / "apk.static"):
|
||||
os.remove(pmb.config.work / "apk.static")
|
||||
|
||||
version = pmb.parse.apkindex.package(args, "apk-tools-static")["version"]
|
||||
apk_path = pmb.chroot.apk_static.download(
|
||||
|
@ -117,8 +118,8 @@ def test_signature_verification(args: PmbArgs, tmpdir):
|
|||
|
||||
|
||||
def test_outdated_version(args: PmbArgs, monkeypatch):
|
||||
if os.path.exists(args.work + "/apk.static"):
|
||||
os.remove(args.work + "/apk.static")
|
||||
if os.path.exists(pmb.config.work / "apk.static"):
|
||||
os.remove(pmb.config.work / "apk.static")
|
||||
|
||||
# Change min version for all branches
|
||||
min_copy = copy.copy(pmb.config.apk_tools_min_version)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import os
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import shutil
|
||||
import filecmp
|
||||
|
@ -21,7 +22,7 @@ def args(tmpdir, request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
args.fork_alpine = False
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
|
@ -84,7 +85,7 @@ def test_aportgen(args: PmbArgs, tmpdir):
|
|||
os.mkdir(tmpdir + "/cross")
|
||||
|
||||
# Create aportgen folder -> code path where it still exists
|
||||
pmb.helpers.run.user(args, ["mkdir", "-p", args.work + "/aportgen"])
|
||||
pmb.helpers.run.user(args, ["mkdir", "-p", pmb.config.work / "aportgen"])
|
||||
|
||||
# Generate all valid packages (gcc twice -> different code path)
|
||||
pkgnames = ["musl-armv7",
|
||||
|
@ -95,7 +96,7 @@ def test_aportgen(args: PmbArgs, tmpdir):
|
|||
pmb.aportgen.generate(args, pkgname)
|
||||
|
||||
|
||||
def test_aportgen_invalid_generator(args):
|
||||
def test_aportgen_invalid_generator(args: PmbArgs):
|
||||
with pytest.raises(ValueError) as e:
|
||||
pmb.aportgen.generate(args, "pkgname-with-no-generator")
|
||||
assert "No generator available" in str(e.value)
|
||||
|
@ -115,7 +116,7 @@ def test_aportgen_get_upstream_aport(args: PmbArgs, monkeypatch):
|
|||
# Equal version
|
||||
func = pmb.aportgen.core.get_upstream_aport
|
||||
upstream = "gcc"
|
||||
upstream_full = args.work + "/cache_git/aports_upstream/main/" + upstream
|
||||
upstream_full = pmb.config.work / "cache_git/aports_upstream/main/" + upstream
|
||||
apkbuild = {"pkgver": "2.0", "pkgrel": "0"}
|
||||
package = {"version": "2.0-r0"}
|
||||
assert func(args, upstream) == upstream_full
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import logging
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
import shutil
|
||||
|
@ -20,7 +21,7 @@ def args(tmpdir, request):
|
|||
sys.argv = ["pmbootstrap.py", "--config-channels", cfg, "build", "-i",
|
||||
"device-testsuite-testdevice"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
|
||||
|
|
|
@ -16,32 +16,32 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_bootimg_invalid_path(args):
|
||||
def test_bootimg_invalid_path(args: PmbArgs):
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
pmb.parse.bootimg(args, "/invalid-path")
|
||||
assert "Could not find file" in str(e.value)
|
||||
|
||||
|
||||
def test_bootimg_kernel(args):
|
||||
def test_bootimg_kernel(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/kernel-boot.img"
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
pmb.parse.bootimg(args, path)
|
||||
assert "heimdall-isorec" in str(e.value)
|
||||
|
||||
|
||||
def test_bootimg_invalid_file(args):
|
||||
def test_bootimg_invalid_file(args: PmbArgs):
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
pmb.parse.bootimg(args, __file__)
|
||||
assert "File is not an Android boot.img" in str(e.value)
|
||||
|
||||
|
||||
def test_bootimg_normal(args):
|
||||
def test_bootimg_normal(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/normal-boot.img"
|
||||
output = {"header_version": "0",
|
||||
"base": "0x80000000",
|
||||
|
@ -56,7 +56,7 @@ def test_bootimg_normal(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_qcdt(args):
|
||||
def test_bootimg_qcdt(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/qcdt-boot.img"
|
||||
output = {"base": "0x80000000",
|
||||
"kernel_offset": "0x00008000",
|
||||
|
@ -70,7 +70,7 @@ def test_bootimg_qcdt(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_mtk(args):
|
||||
def test_bootimg_mtk(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/mtk-boot.img"
|
||||
output = {"header_version": "0",
|
||||
"base": "0x10000000",
|
||||
|
@ -87,7 +87,7 @@ def test_bootimg_mtk(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_mtk_recovery(args):
|
||||
def test_bootimg_mtk_recovery(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/mtk-boot-recovery.img"
|
||||
output = {"header_version": "0",
|
||||
"base": "0x80000000",
|
||||
|
@ -104,7 +104,7 @@ def test_bootimg_mtk_recovery(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_mtk_kernelonly(args):
|
||||
def test_bootimg_mtk_kernelonly(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/mtk-boot-kernel-only.img"
|
||||
output = {"header_version": "0",
|
||||
"base": "0x10000000",
|
||||
|
@ -120,7 +120,7 @@ def test_bootimg_mtk_kernelonly(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_dtb_second(args):
|
||||
def test_bootimg_dtb_second(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/dtb-second-boot.img"
|
||||
output = {"header_version": "0",
|
||||
"base": "0x00000000",
|
||||
|
@ -135,7 +135,7 @@ def test_bootimg_dtb_second(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_v2(args):
|
||||
def test_bootimg_v2(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/boot-header-v2.img"
|
||||
output = {"header_version": "2",
|
||||
"base": "0x40078000",
|
||||
|
@ -151,7 +151,7 @@ def test_bootimg_v2(args):
|
|||
assert pmb.parse.bootimg(args, path) == output
|
||||
|
||||
|
||||
def test_bootimg_v3(args):
|
||||
def test_bootimg_v3(args: PmbArgs):
|
||||
path = pmb_test.const.testdata + "/bootimg/boot-header-v3.img"
|
||||
output = {"header_version": "3",
|
||||
"pagesize": "4096",
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import os
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
@ -14,7 +15,7 @@ def args(request, tmpdir):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
|
||||
|
@ -41,7 +42,7 @@ def cache_apkindex(version):
|
|||
providers["hello-world"]["version"] = version
|
||||
|
||||
|
||||
def test_build_is_necessary(args):
|
||||
def test_build_is_necessary(args: PmbArgs):
|
||||
# Prepare APKBUILD and APKINDEX data
|
||||
aport = pmb.helpers.pmaports.find(args, "hello-world")
|
||||
apkbuild = pmb.parse.apkbuild(f"{aport}/APKBUILD")
|
||||
|
@ -66,7 +67,7 @@ def test_build_is_necessary(args):
|
|||
assert pmb.build.is_necessary(args, None, apkbuild, indexes) is False
|
||||
|
||||
|
||||
def test_build_is_necessary_no_binary_available(args):
|
||||
def test_build_is_necessary_no_binary_available(args: PmbArgs):
|
||||
"""
|
||||
APKINDEX cache is set up to fake an empty APKINDEX, which means that the
|
||||
hello-world package has not been built yet.
|
||||
|
@ -77,7 +78,7 @@ def test_build_is_necessary_no_binary_available(args):
|
|||
assert pmb.build.is_necessary(args, None, apkbuild, indexes) is True
|
||||
|
||||
|
||||
def test_build_is_necessary_cant_build_pmaport_for_arch(args):
|
||||
def test_build_is_necessary_cant_build_pmaport_for_arch(args: PmbArgs):
|
||||
""" pmaport version is higher than Alpine's binary package, but pmaport
|
||||
can't be built for given arch. (#1897) """
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
import datetime
|
||||
import glob
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import shutil
|
||||
import sys
|
||||
|
@ -22,7 +23,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -57,7 +58,7 @@ def args_patched(monkeypatch, argv):
|
|||
return pmb.parse.arguments()
|
||||
|
||||
|
||||
def test_skip_already_built(args):
|
||||
def test_skip_already_built(args: PmbArgs):
|
||||
func = pmb.build._package.skip_already_built
|
||||
assert pmb.helpers.other.cache["built"] == {}
|
||||
assert func("test-package", "armhf") is False
|
||||
|
@ -65,7 +66,7 @@ def test_skip_already_built(args):
|
|||
assert func("test-package", "armhf") is True
|
||||
|
||||
|
||||
def test_get_apkbuild(args):
|
||||
def test_get_apkbuild(args: PmbArgs):
|
||||
func = pmb.build._package.get_apkbuild
|
||||
|
||||
# Valid aport
|
||||
|
@ -314,7 +315,7 @@ def test_finish(args: PmbArgs, monkeypatch):
|
|||
func(args, apkbuild, pmb.config.arch_native, output)
|
||||
|
||||
|
||||
def test_package(args):
|
||||
def test_package(args: PmbArgs):
|
||||
# First build
|
||||
assert pmb.build.package(args, "hello-world", force=True)
|
||||
|
||||
|
@ -352,8 +353,8 @@ def test_build_depends_high_level(args: PmbArgs, monkeypatch):
|
|||
# Build hello-world to get its full output path
|
||||
channel = pmb.config.pmaports.read_config(args)["channel"]
|
||||
output_hello = pmb.build.package(args, "hello-world")
|
||||
output_hello_outside = f"{args.work}/packages/{channel}/{output_hello}"
|
||||
assert os.path.exists(output_hello_outside)
|
||||
output_hello_outside = pmb.config.work / "packages" / channel / output_hello
|
||||
assert output_hello_outside.exists()
|
||||
|
||||
# Make sure the wrapper exists
|
||||
pmb.build.package(args, "hello-world-wrapper")
|
||||
|
|
|
@ -2,39 +2,40 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb/chroot/mount.py """
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
import pmb_test # noqa
|
||||
import pmb.chroot
|
||||
|
||||
from pmb.core import Chroot
|
||||
|
||||
@pytest.fixture
|
||||
def args(tmpdir, request):
|
||||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_chroot_mount(args):
|
||||
suffix = "native"
|
||||
mnt_dir = f"{args.work}/chroot_native/mnt/pmbootstrap"
|
||||
def test_chroot_mount(args: PmbArgs):
|
||||
chroot = Chroot.native()
|
||||
mnt_dir = chroot / "mnt/pmbootstrap"
|
||||
|
||||
# Run something in the chroot to have the dirs created
|
||||
pmb.chroot.root(args, ["true"])
|
||||
assert os.path.exists(mnt_dir)
|
||||
assert os.path.exists(f"{mnt_dir}/packages")
|
||||
assert mnt_dir.exists()
|
||||
assert (mnt_dir / "packages").exists()
|
||||
|
||||
# Umount everything, like in pmb.install.install_system_image
|
||||
pmb.helpers.mount.umount_all(args, f"{args.work}/chroot_{suffix}")
|
||||
pmb.helpers.mount.umount_all(args, chroot.path)
|
||||
|
||||
# Remove all /mnt/pmbootstrap dirs
|
||||
pmb.chroot.remove_mnt_pmbootstrap(args, suffix)
|
||||
assert not os.path.exists(mnt_dir)
|
||||
pmb.chroot.remove_mnt_pmbootstrap(args, chroot)
|
||||
assert not mnt_dir.exists()
|
||||
|
||||
# Run again: it should not crash
|
||||
pmb.chroot.remove_mnt_pmbootstrap(args, suffix)
|
||||
pmb.chroot.remove_mnt_pmbootstrap(args, chroot)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb/config/pmaports.py """
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -18,7 +19,7 @@ def args(request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
@ -17,7 +18,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb/config/workdir.py """
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
import time
|
||||
|
@ -17,7 +18,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -42,7 +43,7 @@ def test_chroot_save_init(args: PmbArgs, tmpdir, monkeypatch):
|
|||
"native = 1234567890\n\n"
|
||||
"[chroot-channels]\n"
|
||||
"native = v20.05\n\n")
|
||||
with open(args.work + "/workdir.cfg", "r") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "r") as handle:
|
||||
assert handle.read() == expected
|
||||
|
||||
# Write again (different code path)
|
||||
|
@ -53,7 +54,7 @@ def test_chroot_save_init(args: PmbArgs, tmpdir, monkeypatch):
|
|||
"[chroot-channels]\n"
|
||||
"native = v20.05\n"
|
||||
"buildroot_armhf = v20.05\n\n")
|
||||
with open(args.work + "/workdir.cfg", "r") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "r") as handle:
|
||||
assert handle.read() == expected
|
||||
|
||||
|
||||
|
@ -70,12 +71,12 @@ def test_chroots_outdated(args: PmbArgs, tmpdir, monkeypatch):
|
|||
assert func(args) is False
|
||||
|
||||
# workdir.cfg is empty file
|
||||
with open(args.work + "/workdir.cfg", "w") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "w") as handle:
|
||||
handle.write("")
|
||||
assert func(args) is False
|
||||
|
||||
# Write fake workdir.cfg: native was created at "90"
|
||||
with open(args.work + "/workdir.cfg", "w") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "w") as handle:
|
||||
handle.write("[chroot-init-dates]\nnative = 90\n\n")
|
||||
|
||||
# Outdated (date_outdated: 90)
|
||||
|
@ -131,21 +132,21 @@ def test_clean(args: PmbArgs, tmpdir):
|
|||
|
||||
# Write fake workdir.cfg
|
||||
cfg_fake = "[chroot-init-dates]\nnative = 1337\n\n"
|
||||
with open(args.work + "/workdir.cfg", "w") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "w") as handle:
|
||||
handle.write(cfg_fake)
|
||||
|
||||
# 1. chroot_native dir exists
|
||||
os.makedirs(args.work + "/chroot_native")
|
||||
os.makedirs(pmb.config.work / "chroot_native")
|
||||
assert func(args) is False
|
||||
|
||||
# workdir.cfg: unchanged
|
||||
with open(args.work + "/workdir.cfg", "r") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "r") as handle:
|
||||
assert handle.read() == cfg_fake
|
||||
|
||||
# 2. chroot_native dir does not exist
|
||||
os.rmdir(args.work + "/chroot_native")
|
||||
os.rmdir(pmb.config.work / "chroot_native")
|
||||
assert func(args) is True
|
||||
|
||||
# workdir.cfg: "native" entry removed
|
||||
with open(args.work + "/workdir.cfg", "r") as handle:
|
||||
with open(pmb.config.work / "workdir.cfg", "r") as handle:
|
||||
assert handle.read() == "[chroot-init-dates]\n\n"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test
|
||||
|
@ -18,13 +19,13 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_package_kernel_args(args):
|
||||
def test_package_kernel_args(args: PmbArgs):
|
||||
args.packages = ["package-one", "package-two"]
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
pmb.build.envkernel.package_kernel(args)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import os
|
||||
import sys
|
||||
import time
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
@ -16,7 +17,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import os
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import shutil
|
||||
|
||||
|
@ -19,13 +20,13 @@ def args(request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_get_path(args):
|
||||
def test_get_path(args: PmbArgs):
|
||||
func = pmb.helpers.git.get_path
|
||||
args.work = "/wrk"
|
||||
args.aports = "/tmp/pmaports"
|
||||
|
@ -109,7 +110,7 @@ def test_get_upstream_remote(args: PmbArgs, monkeypatch, tmpdir):
|
|||
assert func(args, name_repo) == "hello"
|
||||
|
||||
|
||||
def test_parse_channels_cfg(args):
|
||||
def test_parse_channels_cfg(args: PmbArgs):
|
||||
exp = {"meta": {"recommended": "edge"},
|
||||
"channels": {"edge": {"description": "Rolling release channel",
|
||||
"branch_pmaports": "master",
|
||||
|
@ -126,7 +127,7 @@ def test_parse_channels_cfg(args):
|
|||
assert pmb.helpers.git.parse_channels_cfg(args) == exp
|
||||
|
||||
|
||||
def test_pull_non_existing(args):
|
||||
def test_pull_non_existing(args: PmbArgs):
|
||||
assert pmb.helpers.git.pull(args, "non-existing-repo-name") == 1
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import shutil
|
||||
import sys
|
||||
|
@ -16,7 +17,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "lint"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
@ -13,7 +14,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -78,7 +79,7 @@ def test_helpers_package_get_apkindex(args: PmbArgs, monkeypatch):
|
|||
assert func(args, "testpkgname", "x86_64") == package
|
||||
|
||||
|
||||
def test_helpers_package_depends_recurse(args):
|
||||
def test_helpers_package_depends_recurse(args: PmbArgs):
|
||||
""" Test pmb.helpers.package.depends_recurse() """
|
||||
|
||||
# Put fake data into the pmb.helpers.package.get() cache
|
||||
|
@ -98,7 +99,7 @@ def test_helpers_package_depends_recurse(args):
|
|||
assert func(args, "d", "armhf") == ["b", "d"]
|
||||
|
||||
|
||||
def test_helpers_package_check_arch_package(args):
|
||||
def test_helpers_package_check_arch_package(args: PmbArgs):
|
||||
""" Test pmb.helpers.package.check_arch(): binary = True """
|
||||
# Put fake data into the pmb.helpers.package.get() cache
|
||||
func = pmb.helpers.package.check_arch
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -13,7 +14,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb.helpers.repo """
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -15,7 +16,7 @@ def args(tmpdir, request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -27,10 +28,10 @@ def test_hash():
|
|||
assert pmb.helpers.repo.hash(url, 8) == hash
|
||||
|
||||
|
||||
def test_alpine_apkindex_path(args):
|
||||
def test_alpine_apkindex_path(args: PmbArgs):
|
||||
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"
|
||||
ret = pmb.config.work / "cache_apk_armhf/APKINDEX.30e6f5af.tar.gz"
|
||||
assert func(args, "testing", "armhf") == ret
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -12,13 +13,13 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_filter_missing_packages_invalid(args):
|
||||
def test_filter_missing_packages_invalid(args: PmbArgs):
|
||||
""" Test ...repo_missing.filter_missing_packages(): invalid package """
|
||||
func = pmb.helpers.repo_missing.filter_missing_packages
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
|
@ -26,7 +27,7 @@ def test_filter_missing_packages_invalid(args):
|
|||
assert str(e.value).startswith("Could not find aport")
|
||||
|
||||
|
||||
def test_filter_missing_packages_binary_exists(args):
|
||||
def test_filter_missing_packages_binary_exists(args: PmbArgs):
|
||||
""" Test ...repo_missing.filter_missing_packages(): binary exists """
|
||||
func = pmb.helpers.repo_missing.filter_missing_packages
|
||||
assert func(args, "armhf", ["busybox"]) == []
|
||||
|
@ -48,7 +49,7 @@ def test_filter_missing_packages_pmaports(args: PmbArgs, monkeypatch):
|
|||
assert func(args, "x86_64", ["busybox", "hello-world"]) == []
|
||||
|
||||
|
||||
def test_filter_aport_packages(args):
|
||||
def test_filter_aport_packages(args: PmbArgs):
|
||||
""" Test ...repo_missing.filter_aport_packages() """
|
||||
func = pmb.helpers.repo_missing.filter_aport_packages
|
||||
assert func(args, "armhf", ["busybox", "hello-world"]) == ["hello-world"]
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -15,13 +16,13 @@ def args(tmpdir, request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_helpers_ui(args):
|
||||
def test_helpers_ui(args: PmbArgs):
|
||||
""" Test the UIs returned by pmb.helpers.ui.list() with a testdata pmaports
|
||||
dir. That test dir has a plasma-mobile UI, which is disabled for armhf,
|
||||
so it must not be returned when querying the UI list for armhf. """
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
|
@ -12,7 +13,7 @@ import pmb.config
|
|||
import pmb.config.init
|
||||
import pmb.helpers.logging
|
||||
import pmb.install._install
|
||||
from pmb.core import Suffix, SuffixType
|
||||
from pmb.core import Chroot, ChrootType
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -20,13 +21,13 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_get_nonfree_packages(args):
|
||||
def test_get_nonfree_packages(args: PmbArgs):
|
||||
args.aports = pmb_test.const.testdata + "/init_questions_device/aports"
|
||||
func = pmb.install._install.get_nonfree_packages
|
||||
|
||||
|
@ -43,7 +44,7 @@ def test_get_nonfree_packages(args):
|
|||
assert func(args, device) == ["device-" + device + "-nonfree-userland"]
|
||||
|
||||
|
||||
def test_get_recommends(args):
|
||||
def test_get_recommends(args: PmbArgs):
|
||||
args.aports = pmb_test.const.testdata + "/pmb_recommends"
|
||||
func = pmb.install._install.get_recommends
|
||||
|
||||
|
@ -74,7 +75,7 @@ def test_get_recommends(args):
|
|||
assert func(args, ["test-app"]) == ["foot", "htop"]
|
||||
|
||||
|
||||
def test_get_groups(args):
|
||||
def test_get_groups(args: PmbArgs):
|
||||
args.aports = f"{pmb_test.const.testdata}/pmb_groups"
|
||||
func = pmb.install.ui.get_groups
|
||||
|
||||
|
@ -99,11 +100,11 @@ def test_get_groups(args):
|
|||
assert str(e.value).startswith("Could not find aport for package")
|
||||
|
||||
|
||||
def test_generate_binary_list(args):
|
||||
suffix = Suffix(SuffixType.ROOTFS, "mysuffix")
|
||||
def test_generate_binary_list(args: PmbArgs):
|
||||
suffix = Chroot(ChrootType.ROOTFS, "mysuffix")
|
||||
args.work = "/tmp"
|
||||
func = pmb.install._install.generate_binary_list
|
||||
binary_dir = os.path.join(args.work, f"{suffix.chroot()}", "usr/share")
|
||||
binary_dir = suffix / "usr/share"
|
||||
os.makedirs(binary_dir, exist_ok=True)
|
||||
step = 1024
|
||||
binaries = [f"{pmb_test.const.testdata}/pmb_install/small.bin",
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pathlib import Path
|
||||
import pmb_test # noqa
|
||||
import pmb.helpers.mount
|
||||
|
||||
|
@ -14,12 +15,12 @@ def test_umount_all_list(tmpdir):
|
|||
handle.write("source /test/proc\n")
|
||||
handle.write("source /test/dev/loop0p2\\040(deleted)\n")
|
||||
|
||||
ret = pmb.helpers.mount.umount_all_list("/no/match", fake_mounts)
|
||||
ret = pmb.helpers.mount.umount_all_list(Path("/no/match"), fake_mounts)
|
||||
assert ret == []
|
||||
|
||||
ret = pmb.helpers.mount.umount_all_list("/test/var/cache", fake_mounts)
|
||||
ret = pmb.helpers.mount.umount_all_list(Path("/test/var/cache"), fake_mounts)
|
||||
assert ret == ["/test/var/cache"]
|
||||
|
||||
ret = pmb.helpers.mount.umount_all_list("/test", fake_mounts)
|
||||
ret = pmb.helpers.mount.umount_all_list(Path("/test"), fake_mounts)
|
||||
assert ret == ["/test/var/cache", "/test/proc", "/test/home/pmos/packages",
|
||||
"/test/dev/loop0p2", "/test"]
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import glob
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import shutil
|
||||
import sys
|
||||
|
@ -20,7 +21,7 @@ def args(tmpdir, request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -13,7 +14,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -55,7 +56,7 @@ def test_subpackages(args):
|
|||
assert apkbuild["subpackages"]["invalid-function"] is None
|
||||
|
||||
|
||||
def test_kernels(args):
|
||||
def test_kernels(args: PmbArgs):
|
||||
# Kernel hardcoded in depends
|
||||
args.aports = pmb_test.const.testdata + "/init_questions_device/aports"
|
||||
func = pmb.parse._apkbuild.kernels
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
""" Test pmb.parse.apkindex """
|
||||
import collections
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -17,7 +18,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -143,7 +144,7 @@ def test_parse_next_block_conflict():
|
|||
assert start == [20]
|
||||
|
||||
|
||||
def test_parse_add_block(args):
|
||||
def test_parse_add_block(args: PmbArgs):
|
||||
func = pmb.parse.apkindex.parse_add_block
|
||||
multiple_providers = False
|
||||
|
||||
|
@ -170,7 +171,7 @@ def test_parse_add_block(args):
|
|||
assert ret == {"test": block_new, "test_alias": block_new}
|
||||
|
||||
|
||||
def test_parse_add_block_multiple_providers(args):
|
||||
def test_parse_add_block_multiple_providers(args: PmbArgs):
|
||||
func = pmb.parse.apkindex.parse_add_block
|
||||
|
||||
# One package without alias
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb.parse.depends """
|
||||
import collections
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -17,13 +18,13 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_package_from_aports(args):
|
||||
def test_package_from_aports(args: PmbArgs):
|
||||
func = pmb.parse.depends.package_from_aports
|
||||
assert func(args, "invalid-package") is None
|
||||
assert func(args, "hello-world") == {"pkgname": "hello-world",
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -12,13 +13,13 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "init"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_kernel_suffix(args):
|
||||
def test_kernel_suffix(args: PmbArgs):
|
||||
args.aports = pmb_test.const.testdata + "/deviceinfo/aports"
|
||||
device = "multiple-kernels"
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb/parse/kconfig.py """
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
|
@ -17,7 +18,7 @@ def args(tmpdir, request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "kconfig", "check"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
""" Test pmb.helper.pkgrel_bump """
|
||||
import glob
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -17,7 +18,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -72,7 +73,7 @@ def setup_work(args: PmbArgs, tmpdir):
|
|||
pmb.helpers.run.user(args, ["./pmbootstrap.py", "shutdown"])
|
||||
|
||||
# Link everything from work (except for "packages") to the tmpdir
|
||||
for path in glob.glob(args.work + "/*"):
|
||||
for path in glob.glob(pmb.config.work / "*"):
|
||||
if os.path.basename(path) != "packages":
|
||||
pmb.helpers.run.user(args, ["ln", "-s", path, tmpdir + "/"])
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
""" Test preserving HTTP_PROXY and other proxy env vars with all pmbootstrap
|
||||
run functions. """
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -18,7 +19,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -7,6 +7,7 @@ via SSH if expected processes are running.
|
|||
We use an extra config file (based on ~/.config/pmbootstrap.cfg), because we
|
||||
need to change it a lot (e.g. UI, username, ...).
|
||||
"""
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
import shutil
|
||||
|
@ -26,15 +27,15 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def ssh_create_askpass_script(args):
|
||||
def ssh_create_askpass_script(args: PmbArgs):
|
||||
"""Create /tmp/y.sh, which we need to automatically login via SSH."""
|
||||
with open(args.work + "/chroot_native/tmp/y.sh", "w") as handle:
|
||||
with open(pmb.config.work / "chroot_native/tmp/y.sh", "w") as handle:
|
||||
handle.write("#!/bin/sh\necho y\n")
|
||||
pmb.chroot.root(args, ["chmod", "+x", "/tmp/y.sh"])
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import logging
|
||||
import os
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
|
@ -20,7 +21,7 @@ def args(tmpdir, request):
|
|||
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"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
""" Test pmb.helpers.run_core """
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import re
|
||||
import subprocess
|
||||
|
@ -16,7 +17,7 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
@ -44,7 +45,7 @@ def test_sanity_checks():
|
|||
assert str(e.value).startswith("Can't use output_return with")
|
||||
|
||||
|
||||
def test_background(args):
|
||||
def test_background(args: PmbArgs):
|
||||
# Sleep in background
|
||||
process = pmb.helpers.run_core.background(["sleep", "1"], "/")
|
||||
|
||||
|
@ -52,7 +53,7 @@ def test_background(args):
|
|||
assert process.poll() is None
|
||||
|
||||
|
||||
def test_pipe(args):
|
||||
def test_pipe(args: PmbArgs):
|
||||
# Sleep in background
|
||||
process = pmb.helpers.run_core.pipe(["sleep", "1"], "/")
|
||||
|
||||
|
@ -66,7 +67,7 @@ def test_pipe(args):
|
|||
assert process.communicate()[0].decode('utf-8') == "hello"
|
||||
|
||||
|
||||
def test_foreground_pipe(args):
|
||||
def test_foreground_pipe(args: PmbArgs):
|
||||
func = pmb.helpers.run_core.foreground_pipe
|
||||
cmd = ["echo", "test"]
|
||||
|
||||
|
@ -159,7 +160,7 @@ def test_core(args: PmbArgs, monkeypatch):
|
|||
|
||||
|
||||
@pytest.mark.skip_ci
|
||||
def test_sudo_timer(args):
|
||||
def test_sudo_timer(args: PmbArgs):
|
||||
pmb.helpers.run.root(args, ["whoami"])
|
||||
|
||||
time.sleep(300)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test # noqa
|
||||
|
@ -16,13 +17,13 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_shell_escape(args):
|
||||
def test_shell_escape(args: PmbArgs):
|
||||
cmds = {"test\n": ["echo", "test"],
|
||||
"test && test\n": ["echo", "test", "&&", "test"],
|
||||
"test ; test\n": ["echo", "test", ";", "test"],
|
||||
|
@ -54,7 +55,7 @@ def test_shell_escape(args):
|
|||
assert cmd == copy
|
||||
|
||||
|
||||
def test_shell_escape_env(args):
|
||||
def test_shell_escape_env(args: PmbArgs):
|
||||
key = "PMBOOTSTRAP_TEST_ENVIRONMENT_VARIABLE"
|
||||
value = "long value with spaces and special characters: '\"\\!$test"
|
||||
env = {key: value}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2023 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
|
||||
import pmb_test
|
||||
|
@ -15,13 +16,13 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_version(args):
|
||||
def test_version(args: PmbArgs):
|
||||
# Fail after the first error or print a grand total of failures
|
||||
keep_going = False
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
# sourcehut currently. Related to some CDN caching issue probably.
|
||||
import os
|
||||
import sys
|
||||
from pmb.core.types import PmbArgs
|
||||
import pytest
|
||||
import glob
|
||||
import filecmp
|
||||
|
@ -19,23 +20,23 @@ def args(request):
|
|||
import pmb.parse
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
args.log = args.work + "/log_testsuite.txt"
|
||||
args.log = pmb.config.work / "log_testsuite.txt"
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(pmb.helpers.logging.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_keys(args):
|
||||
def test_keys(args: PmbArgs):
|
||||
# Get the alpine-keys apk filename
|
||||
pmb.chroot.init(args)
|
||||
version = pmb.parse.apkindex.package(args, "alpine-keys")["version"]
|
||||
pattern = (args.work + "/cache_apk_" + pmb.config.arch_native +
|
||||
pattern = (pmb.config.work / "cache_apk_" + pmb.config.arch_native +
|
||||
"/alpine-keys-" + version + ".*.apk")
|
||||
filename = os.path.basename(glob.glob(pattern)[0])
|
||||
|
||||
# Extract it to a temporary folder
|
||||
temp = "/tmp/test_keys_extract"
|
||||
temp_outside = args.work + "/chroot_native" + temp
|
||||
temp_outside = pmb.config.work / "chroot_native" + temp
|
||||
if os.path.exists(temp_outside):
|
||||
pmb.chroot.root(args, ["rm", "-r", temp])
|
||||
pmb.chroot.user(args, ["mkdir", "-p", temp])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue