forked from Mirror/pmbootstrap
test: move all tests into separate module (MR 2551)
When installing pmboostrap, all tests are installed alongside it. There doesn't seem to be any way to selectively exclude some files inside python modules, so move all test into a separate module instead. This is the typical convention in python projects. See: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/79862 Fixes: https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/issues/2541
This commit is contained in:
parent
c2bcc81589
commit
5a152aebae
16 changed files with 11 additions and 11 deletions
77
test/core/test_chroot.py
Normal file
77
test/core/test_chroot.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
# Copyright 2024 Caleb Connolly
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import pytest
|
||||
|
||||
from pmb.core.arch import Arch
|
||||
from pmb.core.context import get_context
|
||||
from pmb.core.chroot import Chroot, ChrootType
|
||||
|
||||
|
||||
def test_valid_chroots(pmb_args, mock_devices_find_path):
|
||||
"""Test that Chroot objects work as expected"""
|
||||
|
||||
work = get_context().config.work
|
||||
|
||||
chroot = Chroot.native()
|
||||
assert chroot.type == ChrootType.NATIVE
|
||||
assert chroot.name == ""
|
||||
assert chroot.arch in Arch.supported()
|
||||
assert not chroot.exists() # Shouldn't be created
|
||||
assert chroot.path == work / "chroot_native"
|
||||
assert str(chroot) == "native"
|
||||
|
||||
chroot = Chroot.buildroot(Arch.aarch64)
|
||||
assert chroot.type == ChrootType.BUILDROOT
|
||||
assert chroot.name == "aarch64"
|
||||
assert chroot.arch == Arch.aarch64
|
||||
assert not chroot.exists() # Shouldn't be created
|
||||
assert chroot.path == work / "chroot_buildroot_aarch64"
|
||||
assert str(chroot) == "buildroot_aarch64"
|
||||
|
||||
# FIXME: implicily assumes that we're mocking the qemu-amd64 deviceinfo
|
||||
chroot = Chroot(ChrootType.ROOTFS, "qemu-amd64")
|
||||
assert chroot.type == ChrootType.ROOTFS
|
||||
assert chroot.name == "qemu-amd64"
|
||||
assert chroot.arch == Arch.x86_64
|
||||
assert not chroot.exists() # Shouldn't be created
|
||||
assert chroot.path == work / "chroot_rootfs_qemu-amd64"
|
||||
assert str(chroot) == "rootfs_qemu-amd64"
|
||||
|
||||
|
||||
# mypy: ignore-errors
|
||||
def test_invalid_chroots(pmb_args):
|
||||
"""Test that we can't create invalid chroots."""
|
||||
|
||||
with pytest.raises(ValueError) as excinfo:
|
||||
Chroot(ChrootType.BUILDROOT, "BAD_ARCH")
|
||||
assert (
|
||||
str(excinfo.value)
|
||||
== "Invalid architecture: 'BAD_ARCH', expected something like: aarch64, armhf, armv7, ppc64le, riscv64, x86, x86_64"
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError) as excinfo:
|
||||
Chroot(ChrootType.NATIVE, "aarch64")
|
||||
assert str(excinfo.value) == "The native suffix can't have a name but got: 'aarch64'"
|
||||
|
||||
with pytest.raises(ValueError) as excinfo:
|
||||
Chroot("beep boop")
|
||||
assert str(excinfo.value) == "Invalid chroot type: 'beep boop'"
|
||||
|
||||
with pytest.raises(ValueError) as excinfo:
|
||||
Chroot(5)
|
||||
assert str(excinfo.value) == "Invalid chroot type: '5'"
|
||||
|
||||
|
||||
@pytest.mark.xfail
|
||||
def test_untested_chroots():
|
||||
# IMAGE type is untested, name should be a valid path in this case
|
||||
tested_chroot_types = [
|
||||
ChrootType.ROOTFS,
|
||||
ChrootType.BUILDROOT,
|
||||
ChrootType.NATIVE,
|
||||
ChrootType.INSTALLER,
|
||||
]
|
||||
for ct in ChrootType:
|
||||
if ct not in tested_chroot_types:
|
||||
raise ValueError(f"ChrootType {ct} is untested!")
|
Loading…
Add table
Add a link
Reference in a new issue