Files
coredesktop/smoketest/scenarios/30-upgrade-from-baseline.sh
T
davidandClaude Opus 5.5 334bf5bbd8
shellcheck / shellcheck (push) Failing after 16s
smoketest: 30 runs a baseline's install once more if it fails
voxtype's build from source fails now and then at link time, with
Vulkan shaders missing: 0c0ddf5 built it in two runs and not the third,
with the same packages. The baseline isn't what's under test, and the
old installers skip what they already installed, so try once more.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 17:33:46 -07:00

67 lines
2.9 KiB
Bash

#!/bin/bash
# shellcheck disable=SC2034
DESCRIPTION="install an older commit, update to the commit under test: same machine as a fresh install"
IMAGE=base
TIER="nightly"
mapfile -t VARIANTS < <(sed 's/#.*//' "$(dirname "${BASH_SOURCE[0]}")/../baselines" | awk 'NF { print $1 }')
scenario() {
[ -f "$(reference_fingerprint)" ] \
|| skip "needs the fingerprint 10-fresh-install saves; run both in the same run"
local sha
sha="$(git -C "$SMOKETEST_REPO" rev-parse "$VARIANT^{commit}")"
upstream_set "$sha"
# Older installers can't finish here as they did on a real machine. Install
# those baselines with fixes on top, then put the clone back at the baseline
# itself, as on a machine installed back then: update pulls --ff-only.
# - The source-built herdr pins a zig version Arch has moved on from;
# herdr-bin provides herdr, and is what HEAD installs instead
# - Plain gext install asks GNOME Shell, which shows a dialog no one clicks;
# --filesystem doesn't ask, and is what HEAD does
# - voxtype from source no longer links without clang and cmake, which later
# commits (and HEAD) install
# - install.sh sources install-kickstart-nvim.sh, whose set -u then stops
# bitwarden.sh on its unset LINE; without set -u, that line did nothing
upstream_commit "Smoketest: fixes to install this baseline in a VM" '
sed -i "s/^\([[:space:]]*\)herdr$/\1herdr-bin/" packages.conf
grep -qx "[[:space:]]*clang" packages.conf \
|| sed -i "s/^\([[:space:]]*\)voxtype$/\1clang\n\1cmake\n\1voxtype/" packages.conf
sed -i "s|gext install|gext --filesystem install|" gnome/gnome-extensions.sh
sed -i "s/\"\$LINE\"/\"\${LINE:-}\"/g" bitwarden.sh
git diff --quiet && exit 0'
# Older installers also run flatpak install as the user, which polkit allows
# at the desktop (or asks there) but refuses over SSH. HEAD uses sudo
run_in_vm allow-flatpak "printf '%s\n' \
'polkit.addRule(function(action, subject) {' \
' if (action.id.indexOf(\"org.freedesktop.Flatpak.\") == 0 && subject.user == \"'\"\$USER\"'\")' \
' return polkit.Result.YES;' \
'});' | sudo tee /etc/polkit-1/rules.d/00-smoketest-flatpak.rules"
assert_status 0
cd_install
# voxtype's build from source fails now and then (Vulkan shaders missing at
# link time), and the baseline isn't what's under test: try once more, as
# someone would. The installer skips what it already installed
if [ "$STATUS" -ne 0 ]; then
echo "The baseline's install failed; running it once more"
cd_install
fi
assert_status 0
run_in_vm reset "sudo rm /etc/polkit-1/rules.d/00-smoketest-flatpak.rules
git -C ~/.local/share/coredesktop reset -q --hard $(q "$sha")"
assert_status 0
vm_reboot
upstream_set "$SMOKETEST_REF"
cd_update
assert_status 0
vm_reboot
health
fingerprint "$SMOKETEST_RESULTS/updated.fingerprint"
assert_same_fingerprint "$(reference_fingerprint)" "$SMOKETEST_RESULTS/updated.fingerprint"
}