test_ukify: do not use files from /boot

They might not be readable to the unprivileged user running the tests
and it shouldn't really matter what is used. OTOH, we need a real kernel
because we look at the header.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2024-07-18 15:04:28 +02:00
parent 20e943f987
commit 987f4bce93
+9 -19
View File
@@ -6,6 +6,7 @@
# pylint: disable=protected-access,redefined-outer-name
import base64
import glob
import json
import os
import pathlib
@@ -389,28 +390,17 @@ def test_help_error(capsys):
@pytest.fixture(scope='session')
def kernel_initrd():
opts = ukify.create_parser().parse_args(arg_tools)
bootctl = ukify.find_tool('bootctl', opts=opts)
if bootctl is None:
items = sorted(glob.glob('/lib/modules/*/vmlinuz'))
if not items:
return None
try:
text = subprocess.check_output([bootctl, 'list', '--json=short'],
text=True)
except subprocess.CalledProcessError:
return None
# This doesn't necessarilly give us the latest version, since we're just
# using alphanumeric ordering. But this is fine, a predictable result is
# enough.
linux = items[-1]
items = json.loads(text)
for item in items:
try:
linux = f"{item['root']}{item['linux']}"
initrd = f"{item['root']}{item['initrd'][0].split(' ')[0]}"
except (KeyError, IndexError):
continue
return ['--linux', linux, '--initrd', initrd]
else:
return None
# We don't look _into_ the initrd. Any file is OK.
return ['--linux', linux, '--initrd', ukify.__file__]
def test_check_splash():
try: