packages feed

keiro-dsl-0.15.0.0: test/router-mutation-test.sh

#!/usr/bin/env bash
# Prove that changing one router policy in the spec reddens exactly the
# corresponding hand-written harness expectation.
set -euo pipefail

SPEC="keiro-dsl/test/fixtures/incident-paging/incident-paging.keiro"
OUT="keiro-dsl/test/conformance-router"
EXE="$(cabal list-bin keiro-dsl 2>/dev/null)"
MUT="$(mktemp).keiro"
LOG="$(mktemp).log"
restore() {
  "$EXE" scaffold "$SPEC" --out "$OUT" >/dev/null 2>&1 || true
  rm -f "$MUT" "$LOG"
}
trap restore EXIT

"$EXE" scaffold "$SPEC" --out "$OUT" >/dev/null
cabal test keiro-dsl-conformance-router >/dev/null 2>&1

sed 's/rejected => deadLetter/rejected => halt/' "$SPEC" > "$MUT"
"$EXE" scaffold "$MUT" --out "$OUT" >/dev/null

if cabal test keiro-dsl-conformance-router --test-show-details=direct >"$LOG" 2>&1; then
  echo "FAIL: rejected-policy mutation was not caught"
  exit 1
fi

grep -F 'router harness: 1 assertion(s) failed: ["rejectedPolicy"]' "$LOG" >/dev/null
echo "mutated spec: rejectedPolicy assertion FAILED (expected)"

"$EXE" scaffold "$SPEC" --out "$OUT" >/dev/null
cabal test keiro-dsl-conformance-router >/dev/null 2>&1
echo "restored spec: all router harness assertions green"