From 203b7340ab227407da1f4f3cb51b9dce87a16b5b Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Wed, 16 Sep 2026 20:37:43 +0200 Subject: [PATCH] Test packaged boot settings on ARM and x86_64 Exercise both settings recipes with synthetic runtime files. Check the exact Limine templates, boot drop-ins and backup metadata, installer-owned configuration, notifier copies and architecture-specific Thunderbolt handling. Run package regressions in the existing self-test job. --- .github/workflows/test.yml | 4 ++ pkgbuilds/omarchy-settings/test.sh | 110 +++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 pkgbuilds/omarchy-settings/test.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e48346..4910361 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,4 +47,8 @@ jobs: ./bin/omarchy-release self-test ./tests/partial-release.sh ./tests/published-build-plan.sh + shopt -s nullglob + for test in pkgbuilds/*/test.sh; do + bash "$test" + done ' diff --git a/pkgbuilds/omarchy-settings/test.sh b/pkgbuilds/omarchy-settings/test.sh new file mode 100644 index 0000000..5cb8c62 --- /dev/null +++ b/pkgbuilds/omarchy-settings/test.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# Exercise the real package functions with a minimal, synthetic runtime tree. +set -euo pipefail + +BUILD_ROOT=$(realpath "${BASH_SOURCE[0]%/*}/../..") +scratch=$(mktemp -d) +trap 'rm -rf "$scratch"' EXIT +fixture=$scratch/src/omarchy + +files=( + config/autostart/limine-snapper-notify.desktop + etc/fastfetch/config.jsonc + etc/mkinitcpio.conf.d/omarchy_hooks.conf + etc/mkinitcpio.conf.d/thunderbolt_module.conf + etc/limine-entry-tool.d/omarchy-defaults.conf + etc/limine-entry-tool.d/omarchy-uki.conf + etc/security/faillock.conf + etc/nsswitch.conf + etc/cups/cups-browsed.conf + etc/cups/cups-files.conf + etc/plymouth/plymouthd.conf + etc/sysctl.d/99-omarchy-sysctl.conf + default/uwsm/env.d/10-omarchy + default/environment.d/10-omarchy-fcitx.conf + default/fontconfig/conf.avail/50-omarchy.conf + default/xdg-terminal-exec/hyprland-xdg-terminals.list + default/applications/mimeapps.list + default/systemd/user/bt-agent.service + default/systemd/user/omarchy-sleep-lock.service + default/systemd/user/omarchy-recover-internal-monitor.service + default/systemd/user/omarchy-migrate-notify.service + default/systemd/user/omarchy-tailscale-receive.service + default/systemd/user/omarchy-fcitx5.service + default/systemd/user/omarchy-crash-watch.service + default/systemd/user/app.slice.d/10-oomd.conf + default/systemd/zram-generator.conf.d/90-omarchy.conf + default/systemd/system/plocate-updatedb.service.d/10-omarchy.conf + default/systemd/system-sleep/unmount-fuse + default/bashrc + default/limine/default.conf + default/limine/limine.conf + default/snapper/root + default/sddm/omarchy/Main.qml + default/sddm/hyprland.lua + default/wayland-sessions/omarchy.desktop + default/plymouth/omarchy.plymouth + default/fonts/omarchy/omarchy.ttf + default/hypr/toggles/flags.lua + default/nautilus-python/extensions/localsend.py + default/nautilus-python/extensions/transcode.py + default/tensaku/state.toml + applications/example.desktop + bin/omarchy-upload-log + bin/omarchy-debug + bin/omarchy-debug-idle + logo.txt + logo.svg + icon.txt + icon.png +) +for path in "${files[@]}"; do + mkdir -p "$(dirname "$fixture/$path")" + printf 'fixture for %s\n' "$path" > "$fixture/$path" +done + +for recipe in omarchy-settings omarchy-settings-dev; do + for target_arch in aarch64 x86_64; do + ( + export CARCH=$target_arch OMARCHY_SRC=$fixture + export srcdir=$scratch/src pkgdir=$scratch/$recipe-$target_arch + backup=() + # shellcheck disable=SC1090 # Exercise each recipe's actual package function. + source "$BUILD_ROOT/pkgbuilds/$recipe/PKGBUILD" + package + + for path in etc/mkinitcpio.conf.d/omarchy_hooks.conf \ + etc/limine-entry-tool.d/omarchy-defaults.conf \ + etc/limine-entry-tool.d/omarchy-uki.conf; do + cmp "$fixture/$path" "$pkgdir/$path" + printf '%s\n' "${backup[@]}" | grep -Fxq "$path" + done + for template in default.conf limine.conf; do + cmp "$fixture/default/limine/$template" "$pkgdir/usr/share/omarchy/default/limine/$template" + done + # The installer owns the machine-specific live configuration. + [[ ! -e $pkgdir/etc/default/limine ]] + if printf '%s\n' "${backup[@]}" | grep -Fxq 'etc/default/limine'; then + echo 'FAIL: installer-owned Limine configuration is in backup metadata' >&2 + exit 1 + fi + cmp "$fixture/config/autostart/limine-snapper-notify.desktop" \ + "$pkgdir/etc/skel/.config/autostart/limine-snapper-notify.desktop" + cmp "$fixture/config/autostart/limine-snapper-notify.desktop" \ + "$pkgdir/usr/share/omarchy/config/autostart/limine-snapper-notify.desktop" + + thunderbolt=etc/mkinitcpio.conf.d/thunderbolt_module.conf + if [[ $CARCH == aarch64 ]]; then + [[ ! -e $pkgdir/$thunderbolt ]] + if printf '%s\n' "${backup[@]}" | grep -Fxq "$thunderbolt"; then + echo 'FAIL: removed ARM Thunderbolt config remains in backup metadata' >&2 + exit 1 + fi + else + cmp "$fixture/$thunderbolt" "$pkgdir/$thunderbolt" + printf '%s\n' "${backup[@]}" | grep -Fxq "$thunderbolt" + fi + echo "PASS: $recipe $CARCH retains boot configuration and matching backup metadata" + ) + done +done