summaryrefslogtreecommitdiff
path: root/scripts/testing/lib/validation.sh
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-01-27 17:22:55 -0600
committerCraig Jennings <c@cjennings.net>2026-01-27 17:22:55 -0600
commit70bb2d5ab1bf6787bc613e33f5398be2eca1f5fd (patch)
tree0d8cd5057dd32f5f312a7f3534d590b99c2f0f91 /scripts/testing/lib/validation.sh
parent0c6175bfc98f2c5ff2debc665fd8bf91f9171f4e (diff)
feat(testing): rewrite test infrastructure from libvirt to direct QEMU
Replace the never-fully-operational libvirt-based VM test infrastructure with direct QEMU management and archangel ISO for fully automated, unattended base VM creation. Key changes: - vm-utils.sh: complete rewrite — QEMU process mgmt via PID file, monitor socket for graceful shutdown, qemu-img snapshots, SSH port forwarding (localhost:2222) - create-base-vm.sh: boots archangel ISO, SSHs in, runs unattended install via config file, verifies, creates clean-install snapshot - run-test.sh: snapshot revert, git bundle transfer, detached archsetup execution with setsid, polling, validation, and report generation - debug-vm.sh: CoW overlay disk, GTK display, auto-cleanup on close - setup-testing-env.sh: reduced deps to qemu-full/sshpass/edk2-ovmf/socat - cleanup-tests.sh: PID-based process management, orphan detection - validation.sh: port-based SSH (backward compatible), fuzzel/foot for Hyprland, corrected package list paths - network-diagnostics.sh: getent/curl instead of nslookup/ping (SLIRP) New files: - archsetup-test.conf: archangel config for base VM (btrfs, no encrypt) - archsetup-vm.conf: archsetup config for unattended test execution - assets/archangel.conf.example: reference archangel config Deleted: - finalize-base-vm.sh: merged into create-base-vm.sh - archinstall-config.json: replaced by archangel .conf format Tested: full end-to-end run — 51 validations passed, 0 failures. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'scripts/testing/lib/validation.sh')
-rw-r--r--scripts/testing/lib/validation.sh11
1 files changed, 3 insertions, 8 deletions
diff --git a/scripts/testing/lib/validation.sh b/scripts/testing/lib/validation.sh
index 8c4787e..3191c64 100644
--- a/scripts/testing/lib/validation.sh
+++ b/scripts/testing/lib/validation.sh
@@ -20,7 +20,7 @@ declare -a UNKNOWN_ISSUES
# SSH helper (uses globals: VM_IP, ROOT_PASSWORD)
ssh_cmd() {
sshpass -p "$ROOT_PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
- -o ConnectTimeout=10 "root@$VM_IP" "$@" 2>/dev/null
+ -o ConnectTimeout=10 -p "${SSH_PORT:-22}" "root@$VM_IP" "$@" 2>/dev/null
}
# Validation result helpers
@@ -458,17 +458,12 @@ validate_hyprland_tools() {
local missing=""
# Check core Hyprland packages
- for pkg in hyprland hypridle hyprlock waybar wofi swww grim slurp gammastep; do
+ for pkg in hyprland hypridle hyprlock waybar fuzzel swww grim slurp gammastep foot; do
if ! ssh_cmd "pacman -Q $pkg &>/dev/null"; then
missing="$missing $pkg"
fi
done
- # st should still be installed (via XWayland)
- if ! ssh_cmd "test -f /usr/local/bin/st"; then
- missing="$missing st"
- fi
-
if [ -z "$missing" ]; then
validation_pass "All Hyprland tools installed"
else
@@ -483,7 +478,7 @@ validate_hyprland_config() {
for config in ".config/hypr/hyprland.conf" ".config/hypr/hypridle.conf" \
".config/hypr/hyprlock.conf" ".config/waybar/config" \
- ".config/wofi/config" ".config/gammastep/config.ini"; do
+ ".config/fuzzel/fuzzel.ini" ".config/gammastep/config.ini"; do
if ! ssh_cmd "test -f /home/cjennings/$config"; then
missing="$missing $config"
fi