Simplify the system-update check
No need for a panel, just focus on the main omarchy package
This commit is contained in:
@@ -8,21 +8,13 @@ test_tmp=$(mktemp -d)
|
||||
trap 'rm -rf "$test_tmp"' EXIT
|
||||
|
||||
stub_bin="$test_tmp/bin"
|
||||
test_home="$test_tmp/home"
|
||||
state_home="$test_tmp/state"
|
||||
mkdir -p "$stub_bin" "$test_home" "$state_home"
|
||||
|
||||
cat >"$stub_bin/fakeroot" <<'SH'
|
||||
#!/bin/bash
|
||||
exit 0
|
||||
SH
|
||||
chmod +x "$stub_bin/fakeroot"
|
||||
mkdir -p "$stub_bin"
|
||||
|
||||
cat >"$stub_bin/checkupdates" <<'SH'
|
||||
#!/bin/bash
|
||||
case "${TEST_CHECKUPDATES:-updates}" in
|
||||
updates)
|
||||
printf 'linux 6.1-1 -> 6.1-2\nomarchy 4.0.0-1 -> 4.0.1-1\n'
|
||||
printf 'linux 6.1-1 -> 6.1-2\nomarchy 4.0.0-1 -> 4.0.1-1\nomarchy-settings 4.0.0-1 -> 4.0.1-1\nomarchy-dev 4.1.0-1 -> 4.1.1-1\nomarchy-settings-dev 4.1.0-1 -> 4.1.1-1\n'
|
||||
exit 0
|
||||
;;
|
||||
none)
|
||||
@@ -39,35 +31,29 @@ chmod +x "$stub_bin/checkupdates"
|
||||
cat >"$stub_bin/pacman" <<'SH'
|
||||
#!/bin/bash
|
||||
case "$1" in
|
||||
-Qem)
|
||||
[[ ${TEST_AUR_INSTALLED:-0} == "1" ]] && exit 0 || exit 1
|
||||
;;
|
||||
-Qu)
|
||||
if [[ ${TEST_PACMAN_FALLBACK_UPDATES:-0} == "1" ]]; then
|
||||
echo "fallback-pkg 1-1 -> 1-2"
|
||||
fi
|
||||
exit 0
|
||||
-Qq)
|
||||
case "${TEST_INSTALLED_PACKAGE:-omarchy}" in
|
||||
omarchy)
|
||||
[[ $2 == "omarchy" ]]; exit $?
|
||||
;;
|
||||
omarchy-dev)
|
||||
[[ $2 == "omarchy-dev" ]]; exit $?
|
||||
;;
|
||||
both)
|
||||
[[ $2 == "omarchy" || $2 == "omarchy-dev" ]]; exit $?
|
||||
;;
|
||||
none)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
SH
|
||||
chmod +x "$stub_bin/pacman"
|
||||
|
||||
cat >"$stub_bin/yay" <<'SH'
|
||||
#!/bin/bash
|
||||
if [[ ${TEST_YAY_UPDATES:-0} == "1" ]]; then
|
||||
echo "aur-helper 1-1 -> 1-2"
|
||||
fi
|
||||
exit 0
|
||||
SH
|
||||
chmod +x "$stub_bin/yay"
|
||||
|
||||
run_checker() {
|
||||
HOME="$test_home" \
|
||||
XDG_STATE_HOME="$state_home" \
|
||||
PATH="$stub_bin:$PATH" \
|
||||
OMARCHY_UPDATE_CHECK_TIMEOUT=5 \
|
||||
"$ROOT/bin/omarchy-update-available"
|
||||
PATH="$stub_bin:$PATH" "$ROOT/bin/omarchy-update-available"
|
||||
}
|
||||
|
||||
capture_checker() {
|
||||
@@ -88,33 +74,53 @@ capture_checker() {
|
||||
stdout="$test_tmp/stdout"
|
||||
stderr="$test_tmp/stderr"
|
||||
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=updates TEST_AUR_INSTALLED=0; then
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=updates TEST_INSTALLED_PACKAGE=omarchy; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
[[ $status -eq 0 ]] || fail "update checker exits successfully when system updates are available"
|
||||
grep -q '^linux ' "$stdout" || fail "update checker prints system package updates"
|
||||
grep -q '^omarchy ' "$state_home/omarchy/updates/packages" || fail "update checker stores system package updates"
|
||||
[[ $(wc -l <"$state_home/omarchy/updates/available") -eq 2 ]] || fail "update checker stores combined update list"
|
||||
pass "update checker detects system package updates"
|
||||
[[ $status -eq 0 ]] || fail "update checker exits successfully when omarchy update is available"
|
||||
grep -q '^omarchy ' "$stdout" || fail "update checker prints omarchy updates"
|
||||
! grep -q '^omarchy-settings ' "$stdout" || fail "update checker ignores omarchy-settings updates"
|
||||
! grep -q '^linux ' "$stdout" || fail "update checker ignores non-Omarchy package updates"
|
||||
! grep -q '^omarchy-dev ' "$stdout" || fail "update checker ignores omarchy-dev when omarchy is installed"
|
||||
pass "update checker detects installed omarchy package updates"
|
||||
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=none TEST_AUR_INSTALLED=1 TEST_YAY_UPDATES=1; then
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=updates TEST_INSTALLED_PACKAGE=omarchy-dev; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
[[ $status -eq 0 ]] || fail "update checker exits successfully when AUR updates are available"
|
||||
grep -q '^aur-helper ' "$stdout" || fail "update checker prints AUR package updates"
|
||||
grep -q '^aur-helper ' "$state_home/omarchy/updates/aur" || fail "update checker stores AUR package updates"
|
||||
pass "update checker detects AUR package updates"
|
||||
[[ $status -eq 0 ]] || fail "update checker exits successfully when omarchy-dev update is available"
|
||||
grep -q '^omarchy-dev ' "$stdout" || fail "update checker prints omarchy-dev updates"
|
||||
! grep -q '^omarchy-settings-dev ' "$stdout" || fail "update checker ignores omarchy-settings-dev updates"
|
||||
! grep -q '^omarchy ' "$stdout" || fail "update checker ignores omarchy when omarchy-dev is installed"
|
||||
pass "update checker detects installed omarchy-dev package updates"
|
||||
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=none TEST_AUR_INSTALLED=0; then
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=updates TEST_INSTALLED_PACKAGE=both; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
[[ $status -eq 0 ]] || fail "update checker prefers omarchy-dev when both packages are installed"
|
||||
grep -q '^omarchy-dev ' "$stdout" || fail "update checker prints omarchy-dev when both packages are installed"
|
||||
! grep -q '^omarchy ' "$stdout" || fail "update checker ignores omarchy when omarchy-dev is installed"
|
||||
pass "update checker prefers omarchy-dev over omarchy"
|
||||
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=updates TEST_INSTALLED_PACKAGE=none; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
[[ $status -eq 1 ]] || fail "update checker exits non-zero when no Omarchy package is installed"
|
||||
[[ ! -s $stderr ]] || fail "update checker is quiet when no Omarchy package is installed"
|
||||
pass "update checker ignores systems without omarchy or omarchy-dev installed"
|
||||
|
||||
if capture_checker "$stdout" "$stderr" TEST_CHECKUPDATES=none TEST_INSTALLED_PACKAGE=omarchy; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
[[ $status -eq 1 ]] || fail "update checker exits non-zero when no updates are available"
|
||||
grep -q '^System is up to date$' "$stdout" || fail "update checker prints up-to-date message"
|
||||
[[ ! -s "$state_home/omarchy/updates/available" ]] || fail "update checker clears combined update list when up to date"
|
||||
pass "update checker reports up-to-date systems"
|
||||
grep -q '^Omarchy is up to date$' "$stdout" || fail "update checker prints up-to-date message"
|
||||
pass "update checker reports up-to-date Omarchy packages"
|
||||
|
||||
Reference in New Issue
Block a user