test-kernel-install: tests for entry_name_format=

Test that custom entry_name_format=%e_%v produces correctly-named BLS
loader entries (the-token_1.1.4.conf) and UKI files (the-token_1.1.5.efi),
verifying that the full add/remove cycle works with the new entry name.
This commit is contained in:
Simon de Vlieger
2026-08-03 19:34:27 +02:00
parent ac5863e267
commit cb9c4c4e81

View File

@@ -294,6 +294,99 @@ test ! -e "$BOOT_ROOT/hoge/1.1.1"
test -d "$BOOT_ROOT/hoge"
rmdir "$BOOT_ROOT/hoge"
###########################################
# tests for entry_name_format=
###########################################
# Test inspect with custom entry_name_format
cat >>"$D/sources/install.conf" <<EOF
entry_name_format=%e_%v
EOF
output="$("$kernel_install" -v --json=pretty inspect 1.1.1 "$D/sources/linux")"
echo "$output" | grep -E '"EntryNameFormat" : "%e_%v"' >/dev/null
echo "$output" | grep -E '"EntryName" : "the-token_1.1.1"' >/dev/null
# Test type#1 BLS entry with custom entry_name_format
rm -f "$D/sources/tries"
cat >"$D/sources/install.conf" <<EOF
layout=bls
initrd_generator=none
entry_name_format=%e_%v
EOF
KERNEL_INSTALL_PLUGINS="'${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v add 1.1.4 "$D/sources/linux" "$D/sources/initrd"
entry="$BOOT_ROOT/loader/entries/the-token_1.1.4.conf"
test -f "$entry"
grep -qE '^version +1.1.4' "$entry"
KERNEL_INSTALL_PLUGINS="'${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v remove 1.1.4
test ! -e "$entry"
rm -rf "$BOOT_ROOT/the-token"
# Test UKI with custom entry_name_format
if [ -f "$ukify" ]; then
cat >"$D/sources/install.conf" <<EOF
layout=uki
uki_generator=ukify
initrd_generator=none
entry_name_format=%e_%v
EOF
rm -f "$D/sources/tries"
KERNEL_INSTALL_PLUGINS="'${ukify_install}' '${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v add 1.1.5 "$D/sources/linux" "$D/sources/initrd"
uki="${BOOT_ROOT}/EFI/Linux/the-token_1.1.5.efi"
test -f "$uki"
KERNEL_INSTALL_PLUGINS="'${ukify_install}' '${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v remove 1.1.5
test ! -e "$uki"
# Test boot counting with custom entry_name_format
echo '56' >"$D/sources/tries"
KERNEL_INSTALL_PLUGINS="'${ukify_install}' '${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v add 1.1.5 "$D/sources/linux" "$D/sources/initrd"
uki="${BOOT_ROOT}/EFI/Linux/the-token_1.1.5+56.efi"
test -f "$uki"
KERNEL_INSTALL_PLUGINS="'${ukify_install}' '${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v remove 1.1.5
test ! -e "$uki"
rm -f "$D/sources/tries"
fi
# Test add-all with custom entry_name_format (exercises context_copy)
KVER="$(uname -r)"
if test -f "/usr/lib/modules/$KVER/vmlinuz"; then
rm -rf "$BOOT_ROOT"
mkdir -p "$BOOT_ROOT"
cat >"$D/sources/install.conf" <<EOF
layout=bls
initrd_generator=none
entry_name_format=%e_%v
EOF
KERNEL_INSTALL_PLUGINS="'${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v add-all
entry="$BOOT_ROOT/loader/entries/the-token_${KVER}.conf"
test -f "$entry"
grep -qE "^version +${KVER}" "$entry"
KERNEL_INSTALL_PLUGINS="'${loaderentry_install}' '${uki_copy_install}'" \
"$kernel_install" -v remove "$KVER"
test ! -e "$entry"
rm -rf "$BOOT_ROOT/the-token"
fi
# Restore install.conf and plugins
cat >"$D/sources/install.conf" <<EOF
initrd_generator=none
# those are overridden by envvars
BOOT_ROOT="$D/badboot"
MACHINE_ID=badbadbadbadbadbad6abadbadbadbad
EOF
export KERNEL_INSTALL_PLUGINS="$D/00-skip.install"
###########################################
# tests for --json=
###########################################
@@ -307,6 +400,8 @@ diff -u <(echo "$output") - >&2 <<EOF
"BootRoot" : "$BOOT_ROOT",
"EntryTokenType" : "literal",
"EntryToken" : "the-token",
"EntryNameFormat" : "%e-%v",
"EntryName" : "the-token-1.1.1",
"EntryDirectory" : "$BOOT_ROOT/the-token/1.1.1",
"KernelVersion" : "1.1.1",
"Kernel" : "$D/sources/linux",
@@ -326,7 +421,8 @@ diff -u <(echo "$output") - >&2 <<EOF
"KERNEL_INSTALL_LAYOUT=other",
"KERNEL_INSTALL_INITRD_GENERATOR=none",
"KERNEL_INSTALL_UKI_GENERATOR=",
"KERNEL_INSTALL_STAGING_AREA=${TMPDIR:-/var/tmp}/kernel-install.staging.XXXXXX"
"KERNEL_INSTALL_STAGING_AREA=${TMPDIR:-/var/tmp}/kernel-install.staging.XXXXXX",
"KERNEL_INSTALL_ENTRY_NAME=the-token-1.1.1"
]
}
EOF