Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Failing after 21s
CI / tests-unit (push) Skipped
CI / tests-integration (push) Skipped
CI / tests-ui (push) Skipped
CI / preflight (push) Skipped
CI / deploy (push) Skipped
85 lines
3.2 KiB
Bash
85 lines
3.2 KiB
Bash
# Sourced only by the deployment simulation tests; no external services are used.
|
|
git() {
|
|
if [ "$1" = rev-parse ]; then printf '%s\n' "$TEST_SHA"; return; fi
|
|
local n=0
|
|
if [ -f "$TEST_DIR/remote-count" ]; then read -r n < "$TEST_DIR/remote-count"; fi
|
|
n=$((n+1)); printf '%s\n' "$n" > "$TEST_DIR/remote-count"
|
|
if [ "$SCENARIO" = remote-failure ]; then return 1; fi
|
|
if [ "$SCENARIO" = stale ] || { [ "$SCENARIO" = superseded ] && [ "$n" -gt 1 ]; }; then
|
|
printf '%s\trefs/heads/main\n' bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
else printf '%s\trefs/heads/main\n' "$TEST_SHA"; fi
|
|
}
|
|
flock() { echo "lock" >> "$TEST_DIR/calls"; [ "$SCENARIO" != lock-failure ]; }
|
|
pnpm() {
|
|
# De env-prefix (bv. PLAYWRIGHT_BASE_URL) hoort bij het deploypad dat getest
|
|
# wordt, dus die loggen we mee: zo blijft zichtbaar dat de e2e-test tegen de
|
|
# juiste poort draait.
|
|
echo "${PLAYWRIGHT_BASE_URL:+PLAYWRIGHT_BASE_URL=$PLAYWRIGHT_BASE_URL }pnpm $*" >> "$TEST_DIR/calls"
|
|
if [ "$1" = db:migrate ] && [ "$SCENARIO" = migration-failure ]; then return 1; fi
|
|
if [ "$1" = test:e2e ] && [ "$SCENARIO" = smoke-failure ] && candidate_is_new; then return 1; fi
|
|
return 0
|
|
}
|
|
# De kandidaat is het container dat het script zojuist heeft gestart. Bij
|
|
# blue/green is dat niet per se `epicnext-cms-app`.
|
|
candidate_is_new() {
|
|
for f in epicnext-cms-app epicnext-cms-green; do
|
|
if [ "$(cat "$TEST_DIR/$f" 2>/dev/null)" = new ]; then return 0; fi
|
|
done
|
|
return 1
|
|
}
|
|
nginx() {
|
|
echo "nginx $*" >> "$TEST_DIR/calls"
|
|
if [ "$SCENARIO" = nginx-reject ] && [ "$1" = "-t" ]; then return 1; fi
|
|
if [ "$SCENARIO" = nginx-reload-fail ] && [ "$1" = "-s" ]; then return 1; fi
|
|
return 0
|
|
}
|
|
curl() {
|
|
if [ "$SCENARIO" = health-failure ] && candidate_is_new; then return 1; fi
|
|
echo '{"database":true}'
|
|
}
|
|
sleep() { :; }
|
|
docker() {
|
|
echo "docker $*" >> "$TEST_DIR/calls"
|
|
local name="${@: -1}"
|
|
case "$1" in
|
|
inspect)
|
|
[ -f "$TEST_DIR/$name" ] || return 1
|
|
if [ "${3:-}" = '{{.State.Running}}' ]; then echo true
|
|
elif [ "${3:-}" = '{{.Image}}' ]; then echo "sha256:$(cat "$TEST_DIR/$name")"
|
|
fi ;;
|
|
image)
|
|
if [ "$2" = ls ]; then
|
|
printf '%s\n' "epicnext-cms:verified-$TEST_SHA" "epicnext-cms:verified-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" "epicnext-cms:verified-cccccccccccccccccccccccccccccccccccccccc"
|
|
elif [ "$2" = inspect ]; then
|
|
case "$name" in *bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) echo sha256:old ;; *) echo sha256:unused ;; esac
|
|
fi ;;
|
|
build) [ "$SCENARIO" != build-failure ] ;;
|
|
stop) return 0 ;;
|
|
rename) mv "$TEST_DIR/$2" "$TEST_DIR/$3" ;;
|
|
run)
|
|
run_name=epicnext-cms-app
|
|
prev=""
|
|
for arg in "$@"; do
|
|
if [ "$prev" = "--name" ]; then run_name="$arg"; fi
|
|
prev="$arg"
|
|
done
|
|
echo new > "$TEST_DIR/$run_name"
|
|
[ "$SCENARIO" != run-failure ] ;;
|
|
start) [ -f "$TEST_DIR/$2" ] ;;
|
|
rm) rm -f "$TEST_DIR/$name" ;;
|
|
*) return 0 ;;
|
|
esac
|
|
}
|
|
export -f git flock pnpm curl sleep docker nginx candidate_is_new
|
|
|
|
node() {
|
|
echo "node $*" >> "$TEST_DIR/calls"
|
|
case "$SCENARIO" in
|
|
release-failure) [[ "$*" != *verify-deployed-release.mjs* ]] || return 1 ;;
|
|
news-e2e-failure) [[ "$*" != *e2e/news-real/run.ts* ]] || return 1 ;;
|
|
|
|
esac
|
|
return 0
|
|
}
|
|
export -f node
|