#!/bin/sh set -eu acceptance_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) . "$acceptance_dir/harness.sh" acceptance_init acceptance_require_commands "the firmware acceptance test" expect acceptance_require_file \ "$build_dir/mouse-disk.img" \ "run 'make check' before checking BIOS firmware" acceptance_require_file \ "$build_dir/ovmf-code.fd" \ "run 'make check' before checking UEFI firmware" acceptance_make_temporary firmware raw_disk="$temporary/mouse-disk.img" acceptance_clone_disk "$build_dir/mouse-disk.img" "$raw_disk" run_firmware() { label=$1 check=$2 disk=$3 bus=$4 firmware=$5 MOUSE_BOOT_MODE=firmware \ MOUSE_DISK_IMAGE="$disk" \ MOUSE_DISK_BUS="$bus" \ MOUSE_FIRMWARE="$firmware" \ MOUSE_UEFI_CODE="$build_dir/ovmf-code.fd" \ MOUSE_MEMORY="${MOUSE_MEMORY:-1G}" \ expect "$acceptance_dir/firmware.exp" "$runner" "$label" "$check" } run_firmware "BIOS raw VirtIO" raw-virtio \ "$raw_disk" virtio bios run_firmware "BIOS raw AHCI" raw-sata \ "$raw_disk" sata bios run_firmware "UEFI raw AHCI" raw-uefi-sata \ "$raw_disk" sata uefi run_firmware "UEFI raw NVMe" raw-uefi-nvme \ "$raw_disk" nvme uefi printf '%s\n' "BIOS and UEFI firmware acceptance passed"