#!/usr/bin/env bash
# Fixture test for modules/monitor/install.sh --dry-run: exit 0, DRY-RUN lines, no mutations.
set -euo pipefail
ROOT=$(cd "$(dirname "$0")/../.." && pwd)
INSTALL="$ROOT/modules/monitor/install.sh"
FIX=$(mktemp -d /tmp/monitor-dryrun-test-XXXXXX)
trap 'rm -rf "$FIX"' EXIT
pass=0; fail=0
ok()  { echo "  PASS: $1"; pass=$((pass+1)); }
bad() { echo "  FAIL: $1"; fail=$((fail+1)); }

export HOME="$FIX/home"
mkdir -p "$HOME" "$FIX/bin"

MARKER="$FIX/mutation-marker"
printf 'baseline\n' >"$MARKER"

for cmd in install apt-get systemctl cp rm chown loginctl runuser systemd-tmpfiles gpg mktemp; do
  cat >"$FIX/bin/$cmd" <<'STUB'
#!/usr/bin/env bash
printf 'touched\n' >>"${MONITOR_DRYRUN_MARKER:?}"
exit 0
STUB
  chmod +x "$FIX/bin/$cmd"
done

export MONITOR_DRYRUN_MARKER="$MARKER"
export PATH="$FIX/bin:$PATH"

echo "=== dry-run exits 0 ==="
set +e
out=$("$INSTALL" --dry-run 2>&1)
rc=$?
set -e
if [[ $rc -eq 0 ]]; then ok "dry-run exits 0"; else bad "dry-run exits 0 (rc=$rc): $out"; fi

echo "=== dry-run prints DRY-RUN lines ==="
dry_count=$(printf '%s\n' "$out" | grep -c '^DRY-RUN:' || true)
if [[ "$dry_count" -ge 1 ]]; then ok "≥1 DRY-RUN line ($dry_count)"; else bad "no DRY-RUN lines"; fi

echo "=== dry-run mutates nothing ==="
if cmp -s <(printf 'baseline\n') "$MARKER"; then
  ok "no mutating commands invoked"
else
  bad "mutating commands were invoked: $(cat "$MARKER")"
fi

echo "=== unknown flag errors ==="
set +e
"$INSTALL" --bogus >/dev/null 2>&1
rc=$?
set -e
if [[ $rc -ne 0 ]]; then ok "unknown flag errors"; else bad "unknown flag should error"; fi

echo "=== bash -n clean ==="
if bash -n "$INSTALL"; then ok "bash -n clean"; else bad "bash -n failed"; fi

echo "----"
echo "PASS=$pass FAIL=$fail"
[[ $fail -eq 0 ]]
