diff --git a/meson.build b/meson.build index 2e8b69c96ae..ff0488145b8 100644 --- a/meson.build +++ b/meson.build @@ -3751,7 +3751,7 @@ executable( install : true, install_dir : rootlibexecdir) -public_programs += custom_target( +exe = custom_target( 'kernel-install', input : kernel_install_in, output : 'kernel-install', @@ -3759,6 +3759,13 @@ public_programs += custom_target( install : want_kernel_install, install_mode : 'rwxr-xr-x', install_dir : bindir) +public_programs += exe + +if want_tests != 'false' + test('test-kernel-install', + test_kernel_install_sh, + args : [exe.full_path(), loaderentry_install]) +endif ############################################################ diff --git a/src/kernel-install/meson.build b/src/kernel-install/meson.build index 06c1c3aafb0..90a0e3ae490 100644 --- a/src/kernel-install/meson.build +++ b/src/kernel-install/meson.build @@ -1,10 +1,11 @@ # SPDX-License-Identifier: LGPL-2.1-or-later kernel_install_in = files('kernel-install.in') +loaderentry_install = files('90-loaderentry.install') if want_kernel_install install_data('50-depmod.install', - '90-loaderentry.install', + loaderentry_install, install_mode : 'rwxr-xr-x', install_dir : kernelinstalldir) @@ -16,4 +17,5 @@ if want_kernel_install mkdir_p.format(sysconfdir / 'kernel/install.d')) endif + test_kernel_install_sh = find_program('test-kernel-install.sh') endif diff --git a/src/kernel-install/test-kernel-install.sh b/src/kernel-install/test-kernel-install.sh new file mode 100755 index 00000000000..b350b4d1ef4 --- /dev/null +++ b/src/kernel-install/test-kernel-install.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -eu +set -o pipefail + +kernel_install="${1:?}" +plugin="${2:?}" + +D="$(mktemp --tmpdir --directory "test-kernel-install.XXXXXXXXXX")" + +# shellcheck disable=SC2064 +trap "rm -rf '$D'" EXIT INT QUIT PIPE +mkdir -p "$D/boot" +mkdir -p "$D/efi" +mkdir -p "$D/sources" + +echo 'buzy image' >"$D/sources/linux" +echo 'the initrd' >"$D/sources/initrd" +echo 'the-token' >"$D/sources/entry-token" +echo 'opt1 opt2' >"$D/sources/cmdline" + +cat >"$D/sources/install.conf" <"$D/sources/tries" + +"$kernel_install" -v add 1.1.1 "$D/sources/linux" "$D/sources/initrd" +entry="$BOOT_ROOT/loader/entries/the-token-1.1.1+56.conf" +test -f "$entry" +grep -qE '^title ' "$entry" +grep -qE '^version +1.1.1' "$entry" +grep -qE '^options +opt1 opt2' "$entry" +grep -qE '^linux .*/the-token/1.1.1/linux' "$entry" +grep -qE '^initrd .*/the-token/1.1.1/initrd' "$entry" + +grep -qE 'image' "$BOOT_ROOT/the-token/1.1.1/linux" +grep -qE 'initrd' "$BOOT_ROOT/the-token/1.1.1/initrd"