mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
tests/functional: switch over to using self.scratch_file()
Replace any instances of os.path.join(self.workdir, ".../...") self.workdir + "/.../..." with self.scratch_file("...", "...") which is more compact and portable Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20241217155953.3950506-15-berrange@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
bd96e460d3
commit
beaf88c895
45 changed files with 118 additions and 139 deletions
|
@ -46,8 +46,7 @@ class LinuxKernelTest(QemuSystemTest):
|
|||
os.chdir(cwd)
|
||||
# Return complete path to extracted file. Because callers to
|
||||
# extract_from_deb() specify 'path' with a leading slash, it is
|
||||
# necessary to use os.path.relpath() as otherwise os.path.join()
|
||||
# interprets it as an absolute path and drops the self.workdir part.
|
||||
return os.path.normpath(os.path.join(self.workdir,
|
||||
os.path.relpath(path, '/')))
|
||||
# necessary to use os.path.relpath() as otherwise scratch_file()
|
||||
# interprets it as an absolute path and drops the required prefix
|
||||
return os.path.normpath(self.scratch_file(os.path.relpath(path, '/')))
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ class TuxRunBaselineTest(QemuSystemTest):
|
|||
kernel_image = kernel_asset.fetch()
|
||||
disk_image_zst = rootfs_asset.fetch()
|
||||
|
||||
disk_image = self.workdir + "/rootfs.ext4"
|
||||
disk_image = self.scratch_file("rootfs.ext4")
|
||||
|
||||
run_cmd(['zstd', "-f", "-d", disk_image_zst,
|
||||
"-o", disk_image])
|
||||
|
|
|
@ -38,26 +38,28 @@ class AST2x00MachineSDK(QemuSystemTest):
|
|||
archive_extract(image_path, self.workdir)
|
||||
|
||||
num_cpu = 4
|
||||
image_dir = self.workdir + '/ast2700-default/'
|
||||
uboot_size = os.path.getsize(image_dir + 'u-boot-nodtb.bin')
|
||||
uboot_size = os.path.getsize(self.scratch_file('ast2700-default',
|
||||
'u-boot-nodtb.bin'))
|
||||
uboot_dtb_load_addr = hex(0x400000000 + uboot_size)
|
||||
|
||||
load_images_list = [
|
||||
{
|
||||
'addr': '0x400000000',
|
||||
'file': image_dir + 'u-boot-nodtb.bin'
|
||||
'file': self.scratch_file('ast2700-default',
|
||||
'u-boot-nodtb.bin')
|
||||
},
|
||||
{
|
||||
'addr': str(uboot_dtb_load_addr),
|
||||
'file': image_dir + 'u-boot.dtb'
|
||||
'file': self.scratch_file('ast2700-default', 'u-boot.dtb')
|
||||
},
|
||||
{
|
||||
'addr': '0x430000000',
|
||||
'file': image_dir + 'bl31.bin'
|
||||
'file': self.scratch_file('ast2700-default', 'bl31.bin')
|
||||
},
|
||||
{
|
||||
'addr': '0x430080000',
|
||||
'file': image_dir + 'optee/tee-raw.bin'
|
||||
'file': self.scratch_file('ast2700-default', 'optee',
|
||||
'tee-raw.bin')
|
||||
}
|
||||
]
|
||||
|
||||
|
@ -74,7 +76,8 @@ class AST2x00MachineSDK(QemuSystemTest):
|
|||
self.vm.add_args('-smp', str(num_cpu))
|
||||
self.vm.add_args('-device',
|
||||
'tmp105,bus=aspeed.i2c.bus.1,address=0x4d,id=tmp-test')
|
||||
self.do_test_aarch64_aspeed_sdk_start(image_dir + 'image-bmc')
|
||||
self.do_test_aarch64_aspeed_sdk_start(
|
||||
self.scratch_file('ast2700-default', 'image-bmc'))
|
||||
|
||||
wait_for_console_pattern(self, 'ast2700-default login:')
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
from zipfile import ZipFile
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
|
@ -26,7 +25,7 @@ class Aarch64Raspi3Machine(LinuxKernelTest):
|
|||
|
||||
with ZipFile(zip_path, 'r') as zf:
|
||||
zf.extract(efi_name, path=self.workdir)
|
||||
efi_fd = os.path.join(self.workdir, efi_name)
|
||||
efi_fd = self.scratch_file(efi_name)
|
||||
|
||||
self.set_machine('raspi3b')
|
||||
self.vm.set_console(console_index=1)
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from qemu_test.utils import gzip_uncompress
|
||||
|
@ -64,7 +62,7 @@ class Aarch64Raspi4Machine(LinuxKernelTest):
|
|||
kernel_path = self.extract_from_deb(deb_path, '/boot/kernel8.img')
|
||||
dtb_path = self.extract_from_deb(deb_path, '/boot/bcm2711-rpi-4-b.dtb')
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.set_machine('raspi4b')
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
from qemu_test import interrupt_interactive_console_until_pattern
|
||||
|
@ -32,12 +30,12 @@ def fetch_firmware(test):
|
|||
|
||||
# Secure BootRom (TF-A code)
|
||||
fs0_xz_path = Aarch64SbsarefMachine.ASSET_FLASH0.fetch()
|
||||
fs0_path = os.path.join(test.workdir, "SBSA_FLASH0.fd")
|
||||
fs0_path = test.scratch_file("SBSA_FLASH0.fd")
|
||||
lzma_uncompress(fs0_xz_path, fs0_path)
|
||||
|
||||
# Non-secure rom (UEFI and EFI variables)
|
||||
fs1_xz_path = Aarch64SbsarefMachine.ASSET_FLASH1.fetch()
|
||||
fs1_path = os.path.join(test.workdir, "SBSA_FLASH1.fd")
|
||||
fs1_path = test.scratch_file("SBSA_FLASH1.fd")
|
||||
lzma_uncompress(fs1_xz_path, fs1_path)
|
||||
|
||||
for path in [fs0_path, fs1_path]:
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import time
|
||||
import os
|
||||
import logging
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
|
@ -95,7 +94,7 @@ class Aarch64VirtMachine(QemuSystemTest):
|
|||
|
||||
# Also add a scratch block device
|
||||
logger.info('creating scratch qcow2 image')
|
||||
image_path = os.path.join(self.workdir, 'scratch.qcow2')
|
||||
image_path = self.scratch_file('scratch.qcow2')
|
||||
qemu_img = get_qemu_img(self)
|
||||
run_cmd([qemu_img, 'create', '-f', 'qcow2', image_path, '8M'])
|
||||
|
||||
|
|
|
@ -135,9 +135,9 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
bits_config_file = self.data_file('acpi-bits',
|
||||
'bits-config',
|
||||
'bits-cfg.txt')
|
||||
target_config_dir = os.path.join(self.workdir,
|
||||
'bits-%d' %self.BITS_INTERNAL_VER,
|
||||
'boot')
|
||||
target_config_dir = self.scratch_file('bits-%d' %
|
||||
self.BITS_INTERNAL_VER,
|
||||
'boot')
|
||||
self.assertTrue(os.path.exists(bits_config_file))
|
||||
self.assertTrue(os.path.exists(target_config_dir))
|
||||
shutil.copy2(bits_config_file, target_config_dir)
|
||||
|
@ -148,9 +148,8 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
"""copies the python test scripts into bits. """
|
||||
|
||||
bits_test_dir = self.data_file('acpi-bits', 'bits-tests')
|
||||
target_test_dir = os.path.join(self.workdir,
|
||||
'bits-%d' %self.BITS_INTERNAL_VER,
|
||||
'boot', 'python')
|
||||
target_test_dir = self.scratch_file('bits-%d' % self.BITS_INTERNAL_VER,
|
||||
'boot', 'python')
|
||||
|
||||
self.assertTrue(os.path.exists(bits_test_dir))
|
||||
self.assertTrue(os.path.exists(target_test_dir))
|
||||
|
@ -187,8 +186,8 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
the directory where we have extracted our pre-built bits grub
|
||||
tarball.
|
||||
"""
|
||||
grub_x86_64_mods = os.path.join(self.workdir, 'grub-inst-x86_64-efi')
|
||||
grub_i386_mods = os.path.join(self.workdir, 'grub-inst')
|
||||
grub_x86_64_mods = self.scratch_file('grub-inst-x86_64-efi')
|
||||
grub_i386_mods = self.scratch_file('grub-inst')
|
||||
|
||||
self.assertTrue(os.path.exists(grub_x86_64_mods))
|
||||
self.assertTrue(os.path.exists(grub_i386_mods))
|
||||
|
@ -209,13 +208,11 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
""" Uses grub-mkrescue to generate a fresh bits iso with the python
|
||||
test scripts
|
||||
"""
|
||||
bits_dir = os.path.join(self.workdir,
|
||||
'bits-%d' %self.BITS_INTERNAL_VER)
|
||||
iso_file = os.path.join(self.workdir,
|
||||
'bits-%d.iso' %self.BITS_INTERNAL_VER)
|
||||
mkrescue_script = os.path.join(self.workdir,
|
||||
'grub-inst-x86_64-efi', 'bin',
|
||||
'grub-mkrescue')
|
||||
bits_dir = self.scratch_file('bits-%d' % self.BITS_INTERNAL_VER)
|
||||
iso_file = self.scratch_file('bits-%d.iso' % self.BITS_INTERNAL_VER)
|
||||
mkrescue_script = self.scratch_file('grub-inst-x86_64-efi',
|
||||
'bin',
|
||||
'grub-mkrescue')
|
||||
|
||||
self.assertTrue(os.access(mkrescue_script,
|
||||
os.R_OK | os.W_OK | os.X_OK))
|
||||
|
@ -250,17 +247,18 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
super().setUp()
|
||||
self.logger = self.log
|
||||
|
||||
prebuiltDir = os.path.join(self.workdir, 'prebuilt')
|
||||
prebuiltDir = self.scratch_file('prebuilt')
|
||||
if not os.path.isdir(prebuiltDir):
|
||||
os.mkdir(prebuiltDir, mode=0o775)
|
||||
|
||||
bits_zip_file = os.path.join(prebuiltDir, 'bits-%d-%s.zip'
|
||||
%(self.BITS_INTERNAL_VER,
|
||||
self.BITS_COMMIT_HASH))
|
||||
grub_tar_file = os.path.join(prebuiltDir,
|
||||
'bits-%d-%s-grub.tar.gz'
|
||||
%(self.BITS_INTERNAL_VER,
|
||||
self.BITS_COMMIT_HASH))
|
||||
bits_zip_file = self.scratch_file('prebuilt',
|
||||
'bits-%d-%s.zip'
|
||||
%(self.BITS_INTERNAL_VER,
|
||||
self.BITS_COMMIT_HASH))
|
||||
grub_tar_file = self.scratch_file('prebuilt',
|
||||
'bits-%d-%s-grub.tar.gz'
|
||||
%(self.BITS_INTERNAL_VER,
|
||||
self.BITS_COMMIT_HASH))
|
||||
|
||||
bitsLocalArtLoc = self.ASSET_BITS.fetch()
|
||||
self.logger.info("downloaded bits artifacts to %s", bitsLocalArtLoc)
|
||||
|
@ -284,7 +282,7 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
"""parse the log generated by running bits tests and
|
||||
check for failures.
|
||||
"""
|
||||
debugconf = os.path.join(self.workdir, self._debugcon_log)
|
||||
debugconf = self.scratch_file(self._debugcon_log)
|
||||
log = ""
|
||||
with open(debugconf, 'r', encoding='utf-8') as filehandle:
|
||||
log = filehandle.read()
|
||||
|
@ -316,8 +314,7 @@ class AcpiBitsTest(QemuSystemTest): #pylint: disable=too-many-instance-attribute
|
|||
"""The main test case implementation."""
|
||||
|
||||
self.set_machine('pc')
|
||||
iso_file = os.path.join(self.workdir,
|
||||
'bits-%d.iso' %self.BITS_INTERNAL_VER)
|
||||
iso_file = self.scratch_file('bits-%d.iso' % self.BITS_INTERNAL_VER)
|
||||
|
||||
self.assertTrue(os.access(iso_file, os.R_OK))
|
||||
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import gzip_uncompress
|
||||
|
||||
|
@ -22,7 +20,7 @@ class AlphaClipperTest(LinuxKernelTest):
|
|||
self.set_machine('clipper')
|
||||
kernel_path = self.ASSET_KERNEL.fetch()
|
||||
|
||||
uncompressed_kernel = os.path.join(self.workdir, 'vmlinux')
|
||||
uncompressed_kernel = self.scratch_file('vmlinux')
|
||||
gzip_uncompress(kernel_path, uncompressed_kernel)
|
||||
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from zipfile import ZipFile
|
||||
|
@ -27,7 +25,7 @@ class AST1030Machine(LinuxKernelTest):
|
|||
kernel_name = "ast1030-evb-demo/zephyr.elf"
|
||||
with ZipFile(zip_file, 'r') as zf:
|
||||
zf.extract(kernel_name, path=self.workdir)
|
||||
kernel_file = os.path.join(self.workdir, kernel_name)
|
||||
kernel_file = self.scratch_file(kernel_name)
|
||||
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', kernel_file, '-nographic')
|
||||
|
@ -49,7 +47,7 @@ class AST1030Machine(LinuxKernelTest):
|
|||
kernel_name = "ast1030-evb-demo/zephyr.bin"
|
||||
with ZipFile(zip_file, 'r') as zf:
|
||||
zf.extract(kernel_name, path=self.workdir)
|
||||
kernel_file = os.path.join(self.workdir, kernel_name)
|
||||
kernel_file = self.scratch_file(kernel_name)
|
||||
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', kernel_file, '-nographic')
|
||||
|
|
|
@ -50,7 +50,7 @@ class AST2500Machine(AspeedTest):
|
|||
archive_extract(image_path, self.workdir)
|
||||
|
||||
self.do_test_arm_aspeed_sdk_start(
|
||||
self.workdir + '/ast2500-default/image-bmc')
|
||||
self.scratch_file("ast2500-default", "image-bmc"))
|
||||
|
||||
self.wait_for_console_pattern('ast2500-default login:')
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ class AST2600Machine(AspeedTest):
|
|||
self.vm.add_args('-device',
|
||||
'ds1338,bus=aspeed.i2c.bus.5,address=0x32');
|
||||
self.do_test_arm_aspeed_sdk_start(
|
||||
self.workdir + '/ast2600-a2/image-bmc')
|
||||
self.scratch_file("ast2600-a2", "image-bmc"))
|
||||
|
||||
self.wait_for_console_pattern('ast2600-a2 login:')
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
import bz2
|
||||
|
||||
from qemu_test import QemuUserTest, Asset
|
||||
|
@ -25,7 +24,7 @@ class LoadBFLT(QemuUserTest):
|
|||
def test_stm32(self):
|
||||
# See https://elinux.org/STM32#User_Space
|
||||
rootfs_path_bz2 = self.ASSET_ROOTFS.fetch()
|
||||
busybox_path = os.path.join(self.workdir, "bin/busybox")
|
||||
busybox_path = self.scratch_file("bin", "busybox")
|
||||
|
||||
with bz2.open(rootfs_path_bz2, 'rb') as cpio_handle:
|
||||
cpio_extract(cpio_handle, self.workdir)
|
||||
|
|
|
@ -68,7 +68,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
'sun8i-r40-bananapi-m2-ultra.dtb')
|
||||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
@ -106,7 +106,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
'sun8i-r40-bananapi-m2-ultra.dtb')
|
||||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
rootfs_path_xz = self.ASSET_ROOTFS.fetch()
|
||||
rootfs_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
rootfs_path = self.scratch_file('rootfs.cpio')
|
||||
lzma_uncompress(rootfs_path_xz, rootfs_path)
|
||||
image_pow2ceil_expand(rootfs_path)
|
||||
|
||||
|
@ -150,7 +150,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
# This test download a 8.9 MiB compressed image and expand it
|
||||
# to 127 MiB.
|
||||
image_path_gz = self.ASSET_SD_IMAGE.fetch()
|
||||
image_path = os.path.join(self.workdir, 'sdcard.img')
|
||||
image_path = self.scratch_file('sdcard.img')
|
||||
gzip_uncompress(image_path_gz, image_path)
|
||||
image_pow2ceil_expand(image_path)
|
||||
|
||||
|
|
|
@ -31,7 +31,8 @@ class CanonA1100Machine(QemuSystemTest):
|
|||
member="day18/barebox.canon-a1100.bin")
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-bios',
|
||||
self.workdir + '/day18/barebox.canon-a1100.bin')
|
||||
self.scratch_file('day18',
|
||||
'barebox.canon-a1100.bin'))
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'running /env/bin/init')
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ class CubieboardMachine(LinuxKernelTest):
|
|||
dtb_path = '/usr/lib/linux-image-6.6.16-current-sunxi/sun4i-a10-cubieboard.dtb'
|
||||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
@ -78,7 +78,7 @@ class CubieboardMachine(LinuxKernelTest):
|
|||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
|
||||
rootfs_path_gz = self.ASSET_SATA_ROOTFS.fetch()
|
||||
rootfs_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
rootfs_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(rootfs_path_gz, rootfs_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
@ -112,7 +112,7 @@ class CubieboardMachine(LinuxKernelTest):
|
|||
# to 126 MiB.
|
||||
self.set_machine('cubieboard')
|
||||
image_path_gz = self.ASSET_OPENWRT.fetch()
|
||||
image_path = os.path.join(self.workdir, 'sdcard.img')
|
||||
image_path = self.scratch_file('sdcard.img')
|
||||
gzip_uncompress(image_path_gz, image_path)
|
||||
image_pow2ceil_expand(image_path)
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ class EmcraftSf2Machine(LinuxKernelTest):
|
|||
|
||||
uboot_path = self.ASSET_UBOOT.fetch()
|
||||
spi_path = self.ASSET_SPI.fetch()
|
||||
spi_path_rw = os.path.join(self.workdir, 'spi.bin')
|
||||
spi_path_rw = self.scratch_file('spi.bin')
|
||||
shutil.copy(spi_path, spi_path_rw)
|
||||
os.chmod(spi_path_rw, 0o600)
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
import logging
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
|
@ -67,7 +66,7 @@ class IntegratorMachine(QemuSystemTest):
|
|||
import numpy as np
|
||||
import cv2
|
||||
|
||||
screendump_path = os.path.join(self.workdir, "screendump.pbm")
|
||||
screendump_path = self.scratch_file("screendump.pbm")
|
||||
tuxlogo_path = self.ASSET_TUXLOGO.fetch()
|
||||
|
||||
self.boot_integratorcp()
|
||||
|
|
|
@ -77,7 +77,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
dtb_path = '/usr/lib/linux-image-6.6.16-current-sunxi/sun8i-h3-orangepi-pc.dtb'
|
||||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
@ -113,7 +113,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
dtb_path = '/usr/lib/linux-image-6.6.16-current-sunxi/sun8i-h3-orangepi-pc.dtb'
|
||||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
rootfs_path_xz = self.ASSET_ROOTFS.fetch()
|
||||
rootfs_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
rootfs_path = self.scratch_file('rootfs.cpio')
|
||||
lzma_uncompress(rootfs_path_xz, rootfs_path)
|
||||
image_pow2ceil_expand(rootfs_path)
|
||||
|
||||
|
@ -156,7 +156,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
# to 1036 MiB, but the underlying filesystem is 1552 MiB...
|
||||
# As we expand it to 2 GiB we are safe.
|
||||
image_path_xz = self.ASSET_ARMBIAN.fetch()
|
||||
image_path = os.path.join(self.workdir, 'armbian.img')
|
||||
image_path = self.scratch_file('armbian.img')
|
||||
lzma_uncompress(image_path_xz, image_path)
|
||||
image_pow2ceil_expand(image_path)
|
||||
|
||||
|
@ -197,7 +197,7 @@ class BananaPiMachine(LinuxKernelTest):
|
|||
uboot_path = '/usr/lib/u-boot/orangepi_plus/u-boot-sunxi-with-spl.bin'
|
||||
uboot_path = self.extract_from_deb(deb_path, uboot_path)
|
||||
image_path_gz = self.ASSET_NETBSD.fetch()
|
||||
image_path = os.path.join(self.workdir, 'armv7.img')
|
||||
image_path = self.scratch_file('armv7.img')
|
||||
gzip_uncompress(image_path_gz, image_path)
|
||||
image_pow2ceil_expand(image_path)
|
||||
image_drive_args = 'if=sd,format=raw,snapshot=on,file=' + image_path
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from qemu_test.utils import gzip_uncompress
|
||||
|
@ -65,7 +63,7 @@ class ArmRaspi2Machine(LinuxKernelTest):
|
|||
kernel_path = self.extract_from_deb(deb_path, '/boot/kernel7.img')
|
||||
dtb_path = self.extract_from_deb(deb_path, '/boot/bcm2709-rpi-2-b.dtb')
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.set_machine('raspi2b')
|
||||
|
|
|
@ -32,7 +32,7 @@ class Smdkc210Machine(LinuxKernelTest):
|
|||
dtb_path = self.extract_from_deb(deb_path, dtb_path)
|
||||
|
||||
initrd_path_gz = self.ASSET_ROOTFS.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -18,8 +18,9 @@ class VExpressTest(LinuxKernelTest):
|
|||
self.set_machine('vexpress-a9')
|
||||
file_path = self.ASSET_DAY16.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day16/winter.zImage',
|
||||
dtb=self.workdir + '/day16/vexpress-v2p-ca9.dtb',
|
||||
self.launch_kernel(self.scratch_file('day16', 'winter.zImage'),
|
||||
dtb=self.scratch_file('day16',
|
||||
'vexpress-v2p-ca9.dtb'),
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -19,7 +19,8 @@ class Mcf5208EvbTest(LinuxKernelTest):
|
|||
file_path = self.ASSET_DAY07.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/day07/sanity-clause.elf')
|
||||
self.vm.add_args('-kernel',
|
||||
self.scratch_file('day07', 'sanity-clause.elf'))
|
||||
self.vm.launch()
|
||||
self.wait_for_console_pattern('QEMU advent calendar')
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
# later. See the COPYING file in the top-level directory.
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
|
@ -39,7 +38,7 @@ class NextCubeMachine(QemuSystemTest):
|
|||
@skipIfMissingImports("PIL")
|
||||
def test_bootrom_framebuffer_size(self):
|
||||
self.set_machine('next-cube')
|
||||
screenshot_path = os.path.join(self.workdir, "dump.ppm")
|
||||
screenshot_path = self.scratch_file("dump.ppm")
|
||||
self.check_bootrom_framebuffer(screenshot_path)
|
||||
|
||||
from PIL import Image
|
||||
|
@ -50,7 +49,7 @@ class NextCubeMachine(QemuSystemTest):
|
|||
@skipIfMissingCommands('tesseract')
|
||||
def test_bootrom_framebuffer_ocr_with_tesseract(self):
|
||||
self.set_machine('next-cube')
|
||||
screenshot_path = os.path.join(self.workdir, "dump.ppm")
|
||||
screenshot_path = self.scratch_file("dump.ppm")
|
||||
self.check_bootrom_framebuffer(screenshot_path)
|
||||
lines = tesseract_ocr(screenshot_path)
|
||||
text = '\n'.join(lines)
|
||||
|
|
|
@ -25,7 +25,8 @@ class MicroblazeMachine(QemuSystemTest):
|
|||
file_path = self.ASSET_IMAGE.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/day17/ballerina.bin')
|
||||
self.vm.add_args('-kernel',
|
||||
self.scratch_file('day17', 'ballerina.bin'))
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'This architecture does not have '
|
||||
'kernel memory protection')
|
||||
|
|
|
@ -27,8 +27,9 @@ class MicroblazeelMachine(QemuSystemTest):
|
|||
file_path = self.ASSET_IMAGE.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/day13/xmaton.bin')
|
||||
self.vm.add_args('-nic', 'user,tftp=' + self.workdir + '/day13/')
|
||||
self.vm.add_args('-kernel', self.scratch_file('day13', 'xmaton.bin'))
|
||||
tftproot = self.scratch_file('day13')
|
||||
self.vm.add_args('-nic', f'user,tftp={tftproot}')
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'QEMU Advent Calendar 2023')
|
||||
time.sleep(0.1)
|
||||
|
|
|
@ -68,7 +68,7 @@ class MaltaMachineConsole(LinuxKernelTest):
|
|||
def test_mips64el_malta_5KEc_cpio(self):
|
||||
kernel_path = self.ASSET_KERNEL_3_19_3.fetch()
|
||||
initrd_path_gz = self.ASSET_CPIO_R1.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.set_machine('malta')
|
||||
|
@ -117,10 +117,10 @@ class MaltaMachineFramebuffer(LinuxKernelTest):
|
|||
import numpy as np
|
||||
import cv2
|
||||
|
||||
screendump_path = os.path.join(self.workdir, 'screendump.pbm')
|
||||
screendump_path = self.scratch_file('screendump.pbm')
|
||||
|
||||
kernel_path_gz = self.ASSET_KERNEL_4_7_0.fetch()
|
||||
kernel_path = self.workdir + "/vmlinux"
|
||||
kernel_path = self.scratch_file("vmlinux")
|
||||
gzip_uncompress(kernel_path_gz, kernel_path)
|
||||
|
||||
tuxlogo_path = self.ASSET_TUXLOGO.fetch()
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from qemu_test.utils import gzip_uncompress
|
||||
|
@ -52,7 +50,7 @@ class MaltaMachineConsole(LinuxKernelTest):
|
|||
kernel_path = self.extract_from_deb(deb_path,
|
||||
'/boot/vmlinux-4.5.0-2-4kc-malta')
|
||||
initrd_path_gz = self.ASSET_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'rootfs.cpio')
|
||||
initrd_path = self.scratch_file('rootfs.cpio')
|
||||
gzip_uncompress(initrd_path_gz, initrd_path)
|
||||
|
||||
self.set_machine('malta')
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, LinuxKernelTest, Asset
|
||||
from qemu_test import interrupt_interactive_console_until_pattern
|
||||
from qemu_test import wait_for_console_pattern
|
||||
|
@ -37,7 +35,7 @@ class MaltaMachineConsole(LinuxKernelTest):
|
|||
'ce21ff4b07a981ecb8a39db2876616f5a2473eb2ab459c6f67465b9914b0c6b6')
|
||||
|
||||
def do_test_mips_malta32el_nanomips(self, kernel_path_xz):
|
||||
kernel_path = os.path.join(self.workdir, 'kernel')
|
||||
kernel_path = self.scratch_file('kernel')
|
||||
lzma_uncompress(kernel_path_xz, kernel_path)
|
||||
|
||||
self.set_machine('malta')
|
||||
|
@ -78,7 +76,7 @@ class MaltaMachineYAMON(QemuSystemTest):
|
|||
zip_path = self.ASSET_YAMON_ROM.fetch()
|
||||
with ZipFile(zip_path, 'r') as zf:
|
||||
zf.extract(yamon_bin, path=self.workdir)
|
||||
yamon_path = os.path.join(self.workdir, yamon_bin)
|
||||
yamon_path = self.scratch_file(yamon_bin)
|
||||
|
||||
self.set_machine('malta')
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -19,7 +19,7 @@ class OpenRISC1kSimTest(LinuxKernelTest):
|
|||
file_path = self.ASSET_DAY20.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/day20/vmlinux')
|
||||
self.vm.add_args('-kernel', self.scratch_file('day20', 'vmlinux'))
|
||||
self.vm.launch()
|
||||
self.wait_for_console_pattern('QEMU advent calendar')
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ class E500Test(LinuxKernelTest):
|
|||
self.cpu = 'e5500'
|
||||
file_path = self.ASSET_DAY19.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day19/uImage',
|
||||
self.launch_kernel(self.scratch_file('day19', 'uImage'),
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -46,23 +46,15 @@ class HypervisorTest(QemuSystemTest):
|
|||
:param path: path within the iso file of the file to be extracted
|
||||
:returns: path of the extracted file
|
||||
"""
|
||||
filename = os.path.basename(path)
|
||||
|
||||
cwd = os.getcwd()
|
||||
os.chdir(self.workdir)
|
||||
filename = self.scratch_file(os.path.basename(path))
|
||||
|
||||
cmd = "xorriso -osirrox on -indev %s -cpx %s %s" % (iso, path, filename)
|
||||
subprocess.run(cmd.split(),
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
|
||||
os.chmod(filename, 0o600)
|
||||
os.chdir(cwd)
|
||||
|
||||
# Return complete path to extracted file. Because callers to
|
||||
# extract_from_iso() specify 'path' with a leading slash, it is
|
||||
# necessary to use os.path.relpath() as otherwise os.path.join()
|
||||
# interprets it as an absolute path and drops the self.workdir part.
|
||||
return os.path.normpath(os.path.join(self.workdir, filename))
|
||||
return filename
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
|
|
@ -29,13 +29,15 @@ class AmigaOneMachine(QemuSystemTest):
|
|||
zip_file = self.ASSET_IMAGE.fetch()
|
||||
with ZipFile(zip_file, 'r') as zf:
|
||||
zf.extractall(path=self.workdir)
|
||||
bios_fh = open(self.workdir + "/u-boot-amigaone.bin", "wb")
|
||||
subprocess.run(['tail', '-c', '524288',
|
||||
self.workdir + "/floppy_edition/updater.image"],
|
||||
stdout=bios_fh)
|
||||
bios = self.scratch_file("u-boot-amigaone.bin")
|
||||
with open(bios, "wb") as bios_fh:
|
||||
subprocess.run(['tail', '-c', '524288',
|
||||
self.scratch_file("floppy_edition",
|
||||
"updater.image")],
|
||||
stdout=bios_fh)
|
||||
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-bios', self.workdir + '/u-boot-amigaone.bin')
|
||||
self.vm.add_args('-bios', bios)
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'FLASH:')
|
||||
|
||||
|
|
|
@ -28,10 +28,12 @@ class BambooMachine(QemuSystemTest):
|
|||
file_path = self.ASSET_IMAGE.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir +
|
||||
'/system-image-powerpc-440fp/linux',
|
||||
'-initrd', self.workdir +
|
||||
'/system-image-powerpc-440fp/rootfs.cpio.gz',
|
||||
self.vm.add_args('-kernel',
|
||||
self.scratch_file('system-image-powerpc-440fp',
|
||||
'linux'),
|
||||
'-initrd',
|
||||
self.scratch_file('system-image-powerpc-440fp',
|
||||
'rootfs.cpio.gz'),
|
||||
'-nic', 'user,model=rtl8139,restrict=on')
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'Type exit when done')
|
||||
|
|
|
@ -23,7 +23,7 @@ class MacTest(LinuxKernelTest):
|
|||
file_path = self.ASSET_DAY15.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.add_args('-M', 'graphics=off')
|
||||
self.launch_kernel(self.workdir + '/day15/invaders.elf',
|
||||
self.launch_kernel(self.scratch_file('day15', 'invaders.elf'),
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
def test_ppc_g3beige(self):
|
||||
|
|
|
@ -28,7 +28,7 @@ class Mpc8544dsMachine(QemuSystemTest):
|
|||
file_path = self.ASSET_IMAGE.fetch()
|
||||
archive_extract(file_path, self.workdir, member='creek/creek.bin')
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/creek/creek.bin')
|
||||
self.vm.add_args('-kernel', self.scratch_file('creek', 'creek.bin'))
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'QEMU advent calendar 2020',
|
||||
self.panic_message)
|
||||
|
|
|
@ -28,8 +28,9 @@ class VirtexMl507Machine(QemuSystemTest):
|
|||
file_path = self.ASSET_IMAGE.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', self.workdir + '/hippo/hippo.linux',
|
||||
'-dtb', self.workdir + '/hippo/virtex440-ml507.dtb',
|
||||
self.vm.add_args('-kernel', self.scratch_file('hippo', 'hippo.linux'),
|
||||
'-dtb', self.scratch_file('hippo',
|
||||
'virtex440-ml507.dtb'),
|
||||
'-m', '512')
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'QEMU advent calendar 2020',
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
# later. See the COPYING file in the top-level directory.
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from qemu_test import wait_for_console_pattern, skipFlakyTest
|
||||
|
@ -40,7 +38,7 @@ class RxGdbSimMachine(QemuSystemTest):
|
|||
self.set_machine('gdbsim-r5f562n8')
|
||||
|
||||
uboot_path_gz = self.ASSET_UBOOT.fetch()
|
||||
uboot_path = os.path.join(self.workdir, 'u-boot.bin')
|
||||
uboot_path = self.scratch_file('u-boot.bin')
|
||||
gzip_uncompress(uboot_path_gz, uboot_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -175,7 +175,7 @@ class S390CCWVirtioMachine(QemuSystemTest):
|
|||
kernel_path = self.ASSET_F31_KERNEL.fetch()
|
||||
|
||||
initrd_path_xz = self.ASSET_F31_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'initrd-raw.img')
|
||||
initrd_path = self.scratch_file('initrd-raw.img')
|
||||
lzma_uncompress(initrd_path_xz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
# later. See the COPYING file in the top-level directory.
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import exec_command
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
|
@ -89,7 +87,7 @@ class S390CPUTopology(QemuSystemTest):
|
|||
self.require_accelerator("kvm")
|
||||
kernel_path = self.ASSET_F35_KERNEL.fetch()
|
||||
initrd_path_xz = self.ASSET_F35_INITRD.fetch()
|
||||
initrd_path = os.path.join(self.workdir, 'initrd-raw.img')
|
||||
initrd_path = self.scratch_file('initrd-raw.img')
|
||||
lzma_uncompress(initrd_path_xz, initrd_path)
|
||||
|
||||
self.vm.set_console()
|
||||
|
|
|
@ -22,7 +22,8 @@ class R2dTest(LinuxKernelTest):
|
|||
file_path = self.ASSET_DAY09.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.add_args('-append', 'console=ttySC1')
|
||||
self.launch_kernel(self.workdir + '/day09/zImage', console_index=1,
|
||||
self.launch_kernel(self.scratch_file('day09', 'zImage'),
|
||||
console_index=1,
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
|
@ -22,11 +21,12 @@ class R2dEBTest(LinuxKernelTest):
|
|||
file_path = self.ASSET_TGZ.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.add_args('-append', 'console=ttySC1 noiotrap')
|
||||
self.launch_kernel(os.path.join(self.workdir, 'sh4eb/linux-kernel'),
|
||||
initrd=os.path.join(self.workdir, 'sh4eb/initramfs.cpio.gz'),
|
||||
self.launch_kernel(self.scratch_file('sh4eb', 'linux-kernel'),
|
||||
initrd=self.scratch_file('sh4eb',
|
||||
'initramfs.cpio.gz'),
|
||||
console_index=1, wait_for='Type exit when done')
|
||||
exec_command_and_wait_for_pattern(self, 'exit', 'Restarting system')
|
||||
shutil.rmtree(os.path.join(self.workdir, 'sh4eb'))
|
||||
shutil.rmtree(self.scratch_file('sh4eb'))
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
||||
|
|
|
@ -10,12 +10,11 @@
|
|||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
# later. See the COPYING file in the top-level directory.
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
|
||||
class Sun4uMachine(QemuSystemTest):
|
||||
"""Boots the Linux kernel and checks that the console is operational"""
|
||||
|
||||
|
@ -32,7 +31,7 @@ class Sun4uMachine(QemuSystemTest):
|
|||
kernel_name = 'day23/vmlinux'
|
||||
archive_extract(file_path, self.workdir, kernel_name)
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', os.path.join(self.workdir, kernel_name),
|
||||
self.vm.add_args('-kernel', self.scratch_file(kernel_name),
|
||||
'-append', 'printk.time=0')
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'Starting logging: OK')
|
||||
|
|
|
@ -18,7 +18,7 @@ class Sun4mTest(LinuxKernelTest):
|
|||
self.set_machine('SS-20')
|
||||
file_path = self.ASSET_DAY11.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day11/zImage.elf',
|
||||
self.launch_kernel(self.scratch_file('day11', 'zImage.elf'),
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -19,7 +19,8 @@ class XTensaLX60Test(LinuxKernelTest):
|
|||
self.cpu = 'dc233c'
|
||||
file_path = self.ASSET_DAY02.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day02/santas-sleigh-ride.elf',
|
||||
self.launch_kernel(self.scratch_file('day02',
|
||||
'santas-sleigh-ride.elf'),
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue