Test the boot image migration as omarchy-migrate runs it, and a failed rebuild
The test ran the migration with plain bash. omarchy-migrate runs it with bash -euo pipefail, and the migration depends on that: it is what stops a failed limine-mkinitcpio before the marker is written, so the next update tries again. The stand-in rebuild could not fail, so nothing held that promise. The test now uses the same options and adds the case: a rebuild that fails ends the migration with an error and leaves no marker, and the next run rebuilds and marks it.
This commit is contained in:
1 parent
f03bf06742
commit
295a926ffd
1 file changed
+14
-5
@@ -15,9 +15,10 @@ trap 'rm -rf "$test_dir"' EXIT
|
|||||||
stub_bin="$test_dir/bin"
|
stub_bin="$test_dir/bin"
|
||||||
mkdir -p "$stub_bin"
|
mkdir -p "$stub_bin"
|
||||||
|
|
||||||
# sudo just drops the prefix; limine-mkinitcpio records that it ran.
|
# sudo just drops the prefix; limine-mkinitcpio records that it ran, and fails
|
||||||
|
# when told to.
|
||||||
printf '#!/bin/bash\nexec "$@"\n' >"$stub_bin/sudo"
|
printf '#!/bin/bash\nexec "$@"\n' >"$stub_bin/sudo"
|
||||||
printf '#!/bin/bash\necho rebuilt >>"${REBUILDS:?}"\n' >"$stub_bin/limine-mkinitcpio"
|
printf '#!/bin/bash\necho rebuilt >>"${REBUILDS:?}"\n[[ -z ${REBUILD_FAILS:-} ]]\n' >"$stub_bin/limine-mkinitcpio"
|
||||||
chmod +x "$stub_bin"/*
|
chmod +x "$stub_bin"/*
|
||||||
|
|
||||||
old_cmdline="root=PARTUUID=1 rw quiet splash initramfs_async=0"
|
old_cmdline="root=PARTUUID=1 rw quiet splash initramfs_async=0"
|
||||||
@@ -28,14 +29,22 @@ run() { # booted cmdline, defaults conf
|
|||||||
printf '%s\n' "$1" >"$test_dir/cmdline"
|
printf '%s\n' "$1" >"$test_dir/cmdline"
|
||||||
PATH="$stub_bin:$ROOT/bin:$PATH" REBUILDS="$test_dir/rebuilds" \
|
PATH="$stub_bin:$ROOT/bin:$PATH" REBUILDS="$test_dir/rebuilds" \
|
||||||
OMARCHY_RUNNING_CMDLINE="$test_dir/cmdline" OMARCHY_LIMINE_DEFAULTS_CONF="$2" \
|
OMARCHY_RUNNING_CMDLINE="$test_dir/cmdline" OMARCHY_LIMINE_DEFAULTS_CONF="$2" \
|
||||||
OMARCHY_LIMINE_REBUILD_MARKER="$test_dir/marker" bash "$migration" >/dev/null
|
OMARCHY_LIMINE_REBUILD_MARKER="$test_dir/marker" bash -euo pipefail "$migration" >/dev/null
|
||||||
}
|
}
|
||||||
rebuilds() { wc -l <"$test_dir/rebuilds"; }
|
rebuilds() { wc -l <"$test_dir/rebuilds"; }
|
||||||
|
|
||||||
|
# omarchy-migrate runs a migration with bash -euo pipefail, and so does run:
|
||||||
|
# that is what stops a failed rebuild before the marker is written.
|
||||||
|
if REBUILD_FAILS=1 run "$old_cmdline" "$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf"; then
|
||||||
|
fail "a rebuild that failed was reported as a success"
|
||||||
|
fi
|
||||||
|
[[ $(rebuilds) == 1 && ! -e $test_dir/marker ]] || fail "a failed rebuild was marked as done"
|
||||||
|
pass "a rebuild that fails stops the migration and leaves no marker"
|
||||||
|
|
||||||
run "$old_cmdline" "$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf"
|
run "$old_cmdline" "$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf"
|
||||||
[[ $(rebuilds) == 1 && -e $test_dir/marker ]] ||
|
[[ $(rebuilds) == 1 && -e $test_dir/marker ]] ||
|
||||||
fail "a machine booted without the parameter did not get its boot image rebuilt"
|
fail "a machine booted without the parameter did not get its boot image rebuilt"
|
||||||
pass "a machine booted without the parameter gets its boot image rebuilt, with the packaged defaults"
|
pass "the next run rebuilds the boot image, with the packaged defaults, and marks it"
|
||||||
|
|
||||||
run "$old_cmdline" "$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf"
|
run "$old_cmdline" "$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf"
|
||||||
[[ $(rebuilds) == 0 ]] || fail "the rebuild ran a second time before a reboot"
|
[[ $(rebuilds) == 0 ]] || fail "the rebuild ran a second time before a reboot"
|
||||||
@@ -61,6 +70,6 @@ for tool in bash grep install cat; do ln -s "$(command -v "$tool")" "$test_dir/t
|
|||||||
printf '%s\n' "$old_cmdline" >"$test_dir/cmdline"
|
printf '%s\n' "$old_cmdline" >"$test_dir/cmdline"
|
||||||
PATH="$stub_bin:$ROOT/bin:$test_dir/tools" REBUILDS="$test_dir/rebuilds" \
|
PATH="$stub_bin:$ROOT/bin:$test_dir/tools" REBUILDS="$test_dir/rebuilds" \
|
||||||
OMARCHY_RUNNING_CMDLINE="$test_dir/cmdline" OMARCHY_LIMINE_DEFAULTS_CONF="$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf" \
|
OMARCHY_RUNNING_CMDLINE="$test_dir/cmdline" OMARCHY_LIMINE_DEFAULTS_CONF="$ROOT/etc/limine-entry-tool.d/omarchy-defaults.conf" \
|
||||||
OMARCHY_LIMINE_REBUILD_MARKER="$test_dir/marker" "$test_dir/tools/bash" "$migration" >/dev/null
|
OMARCHY_LIMINE_REBUILD_MARKER="$test_dir/marker" "$test_dir/tools/bash" -euo pipefail "$migration" >/dev/null
|
||||||
[[ ! -e $test_dir/marker ]] || fail "a machine without Limine was marked as rebuilt"
|
[[ ! -e $test_dir/marker ]] || fail "a machine without Limine was marked as rebuilt"
|
||||||
pass "a machine without Limine is left alone"
|
pass "a machine without Limine is left alone"
|
||||||
Reference in new issue
Block a user