diff --git a/test/test_file.py b/test/test_file.py index f96dd02..1f92db1 100644 --- a/test/test_file.py +++ b/test/test_file.py @@ -4,6 +4,7 @@ import gzip import hashlib import os +import struct import tempfile import unittest @@ -97,6 +98,23 @@ def write_efistub(path: Path, if not uname: f.write(version_line) +def write_efi_zboot(path: Path, + version_line: bytes + ) -> None: + """Write an EFI zboot kernel image at `path`, with `version_line`""" + # generate a compressed image as our payload + write_compress(path, version_line) + b = path.read_bytes() + + with open(path, "wb") as f: + f.write(b"MZ\0\0zimg") + f.write(struct.pack(" None: @@ -147,6 +165,13 @@ def test_read_internal_version_efistub_uname_nowhitespace(self) -> None: KernelImage(path).read_internal_version(), "1.2.3") + def test_read_internal_version_efi_zboot(self) -> None: + path = Path(self.td.name) / "vmlinuz" + write_efi_zboot(path, b"Linux version 1.2.3 built on test") + self.assertEqual( + KernelImage(path).read_internal_version(), + "1.2.3") + def test_very_short(self) -> None: path = Path(self.td.name) / 'vmlinuz' with open(path, 'wb') as f: