Improve update and migration flow
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$(dirname "$0")/base-test.sh"
|
||||
|
||||
test_tmp=$(mktemp -d)
|
||||
trap 'rm -rf "$test_tmp"' EXIT
|
||||
|
||||
stub_bin="$test_tmp/bin"
|
||||
test_home="$test_tmp/home"
|
||||
mkdir -p "$stub_bin" "$test_home"
|
||||
|
||||
cat >"$stub_bin/omarchy-migrate-system" <<'SH'
|
||||
#!/bin/bash
|
||||
if [[ ${1:-} == "--pending" ]]; then
|
||||
[[ ${OMARCHY_TEST_PENDING_SYSTEM:-1} == 1 ]] || exit 1
|
||||
echo 100-system.sh
|
||||
exit 0
|
||||
fi
|
||||
echo system >>"$TEST_CALLS"
|
||||
SH
|
||||
chmod +x "$stub_bin/omarchy-migrate-system"
|
||||
|
||||
cat >"$stub_bin/omarchy-migrate-user" <<'SH'
|
||||
#!/bin/bash
|
||||
if [[ ${1:-} == "--pending" ]]; then
|
||||
[[ ${OMARCHY_TEST_PENDING_USER:-1} == 1 ]] || exit 1
|
||||
echo 200-user.sh
|
||||
exit 0
|
||||
fi
|
||||
echo user >>"$TEST_CALLS"
|
||||
SH
|
||||
chmod +x "$stub_bin/omarchy-migrate-user"
|
||||
|
||||
run_migrate() {
|
||||
HOME="$test_home" \
|
||||
PATH="$stub_bin:$PATH" \
|
||||
TEST_CALLS="$test_tmp/calls" \
|
||||
"$ROOT/bin/omarchy-migrate" "$@"
|
||||
}
|
||||
|
||||
: >"$test_tmp/calls"
|
||||
run_migrate >"$test_tmp/migrate.out"
|
||||
[[ $(sed -n '1p' "$test_tmp/calls") == "system" ]] || fail "omarchy-migrate runs system migrations first"
|
||||
[[ $(sed -n '2p' "$test_tmp/calls") == "user" ]] || fail "omarchy-migrate runs user migrations second"
|
||||
[[ $(wc -l <"$test_tmp/calls") -eq 2 ]] || fail "omarchy-migrate only delegates to system and user migration runners"
|
||||
pass "omarchy-migrate runs system and user migrations without force"
|
||||
|
||||
run_migrate --pending >"$test_tmp/pending-all.out"
|
||||
grep -q '^system/100-system\.sh$' "$test_tmp/pending-all.out" || fail "omarchy-migrate --pending lists pending system migrations"
|
||||
grep -q '^user/200-user\.sh$' "$test_tmp/pending-all.out" || fail "omarchy-migrate --pending lists pending user migrations"
|
||||
pass "omarchy-migrate --pending lists all pending migrations"
|
||||
|
||||
run_migrate --pending user >"$test_tmp/pending-user.out"
|
||||
grep -q '^user/200-user\.sh$' "$test_tmp/pending-user.out" || fail "omarchy-migrate --pending user lists user migrations"
|
||||
! grep -q '^system/' "$test_tmp/pending-user.out" || fail "omarchy-migrate --pending user omits system migrations"
|
||||
pass "omarchy-migrate --pending user scopes pending output"
|
||||
|
||||
if OMARCHY_TEST_PENDING_SYSTEM=0 OMARCHY_TEST_PENDING_USER=0 run_migrate --pending >"$test_tmp/not-pending.out"; then
|
||||
fail "omarchy-migrate --pending exits non-zero without pending migrations"
|
||||
fi
|
||||
[[ ! -s $test_tmp/not-pending.out ]] || fail "omarchy-migrate --pending stays quiet without pending migrations"
|
||||
pass "omarchy-migrate --pending reports no pending migrations"
|
||||
|
||||
if run_migrate --force >"$test_tmp/force.out" 2>&1; then
|
||||
fail "omarchy-migrate rejects obsolete --force option"
|
||||
fi
|
||||
grep -q 'Unknown option: --force' "$test_tmp/force.out" || fail "omarchy-migrate reports obsolete --force option"
|
||||
pass "omarchy-migrate no longer needs --force"
|
||||
Reference in New Issue
Block a user