forked from Mirror/pmbootstrap
166 lines
5 KiB
Python
166 lines
5 KiB
Python
# Copyright 2024 Caleb Connolly
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
from pmb.types import Bootimg
|
|
import pytest
|
|
|
|
from pmb.aportgen.device import generate_deviceinfo_fastboot_content
|
|
|
|
# Test case name -> (input, expected substrings, !expected substrings)
|
|
test_data: dict[str, tuple[Bootimg | None, list[str], list[str]]] = {
|
|
"none": (None, ['kernel_cmdline=""', 'flash_pagesize="2048"'], []),
|
|
"header_v0": (
|
|
Bootimg(
|
|
cmdline="beep boop",
|
|
header_version="0",
|
|
bootimg_qcdt="false",
|
|
base="0x80000000",
|
|
kernel_offset="0x8000",
|
|
tags_offset="0x100",
|
|
bootimg_qcdt_type=None,
|
|
bootimg_qcdt_exynos_platform=None,
|
|
bootimg_qcdt_exynos_subtype=None,
|
|
dtb_offset=None,
|
|
dtb_second="",
|
|
pagesize="2048",
|
|
ramdisk_offset="",
|
|
second_offset="",
|
|
mtk_label_kernel="",
|
|
mtk_label_ramdisk="",
|
|
),
|
|
[
|
|
'kernel_cmdline="beep boop"',
|
|
'flash_pagesize="2048"',
|
|
'flash_offset_base="0x80000000"',
|
|
'flash_offset_kernel="0x8000"',
|
|
'flash_offset_tags="0x100"',
|
|
],
|
|
[],
|
|
),
|
|
"header_v2": (
|
|
Bootimg(
|
|
cmdline="console=ttyMSM0,115200n8",
|
|
header_version="2",
|
|
bootimg_qcdt="false",
|
|
base="0x80000000",
|
|
kernel_offset="",
|
|
tags_offset="",
|
|
bootimg_qcdt_type=None,
|
|
bootimg_qcdt_exynos_platform=None,
|
|
bootimg_qcdt_exynos_subtype=None,
|
|
dtb_offset="0x101f00000",
|
|
dtb_second="",
|
|
pagesize="2048",
|
|
ramdisk_offset="",
|
|
second_offset="",
|
|
mtk_label_kernel="",
|
|
mtk_label_ramdisk="",
|
|
),
|
|
[
|
|
'kernel_cmdline="console=ttyMSM0,115200n8"',
|
|
'flash_pagesize="2048"',
|
|
'append_dtb="false"',
|
|
'flash_offset_dtb="0x101f00000"',
|
|
],
|
|
[],
|
|
),
|
|
"header_v3": (
|
|
Bootimg(
|
|
cmdline="console=ttyMSM0,115200n8",
|
|
header_version="3",
|
|
bootimg_qcdt="false",
|
|
base="",
|
|
kernel_offset="",
|
|
tags_offset="",
|
|
bootimg_qcdt_type=None,
|
|
bootimg_qcdt_exynos_platform=None,
|
|
bootimg_qcdt_exynos_subtype=None,
|
|
dtb_offset="",
|
|
dtb_second="",
|
|
pagesize="4096",
|
|
ramdisk_offset="",
|
|
second_offset="",
|
|
mtk_label_kernel="",
|
|
mtk_label_ramdisk="",
|
|
),
|
|
[
|
|
'kernel_cmdline="console=ttyMSM0,115200n8"',
|
|
'flash_pagesize="4096"',
|
|
],
|
|
[
|
|
"flash_offset_base",
|
|
],
|
|
),
|
|
"header_exynos_qcdt": (
|
|
Bootimg(
|
|
cmdline="console=ttySAC1,115200",
|
|
header_version="2",
|
|
bootimg_qcdt="true",
|
|
base="",
|
|
kernel_offset="",
|
|
tags_offset="",
|
|
bootimg_qcdt_type="exynos",
|
|
bootimg_qcdt_exynos_platform="",
|
|
bootimg_qcdt_exynos_subtype="",
|
|
dtb_offset="",
|
|
dtb_second="",
|
|
pagesize="2048",
|
|
ramdisk_offset="",
|
|
second_offset="",
|
|
mtk_label_kernel="",
|
|
mtk_label_ramdisk="",
|
|
),
|
|
[
|
|
'kernel_cmdline="console=ttySAC1,115200"',
|
|
'bootimg_qcdt="true"',
|
|
'bootimg_qcdt_type="exynos"',
|
|
],
|
|
[
|
|
"bootimg_qcdt_exynos_platform",
|
|
"bootimg_qcdt_exynos_subtype",
|
|
],
|
|
),
|
|
"header_exynos_custom_qcdt": (
|
|
Bootimg(
|
|
cmdline="console=ttySAC1,115200",
|
|
header_version="2",
|
|
bootimg_qcdt="true",
|
|
base="",
|
|
kernel_offset="",
|
|
tags_offset="",
|
|
bootimg_qcdt_type="exynos",
|
|
bootimg_qcdt_exynos_platform="0x347e",
|
|
bootimg_qcdt_exynos_subtype="0x88668650",
|
|
dtb_offset="",
|
|
dtb_second="",
|
|
pagesize="2048",
|
|
ramdisk_offset="",
|
|
second_offset="",
|
|
mtk_label_kernel="",
|
|
mtk_label_ramdisk="",
|
|
),
|
|
[
|
|
'kernel_cmdline="console=ttySAC1,115200"',
|
|
'bootimg_qcdt="true"',
|
|
'bootimg_qcdt_type="exynos"',
|
|
'bootimg_qcdt_exynos_platform="0x347e"',
|
|
'bootimg_qcdt_exynos_subtype="0x88668650"',
|
|
],
|
|
[],
|
|
),
|
|
}
|
|
|
|
|
|
@pytest.mark.parametrize("case", [*test_data.keys()])
|
|
def test_deviceinfo_fastboot(case):
|
|
bootimg = test_data[case][0]
|
|
expected_substrings = test_data[case][1]
|
|
unexpected_substrings = test_data[case][2]
|
|
content = generate_deviceinfo_fastboot_content(bootimg)
|
|
|
|
print(content)
|
|
for substring in expected_substrings:
|
|
assert substring in content, f"Expected substring not found: {substring}"
|
|
|
|
for substring in unexpected_substrings:
|
|
assert substring not in content, f"Unexpected substring found: {substring}"
|