Newer
Older
openstack-caracal-ipv4 / tests / repo-lint / run-tests.sh
@JANeumatrix JANeumatrix 10 hours ago 2 KB Patches
#!/usr/bin/env bash
# tests/repo-lint/run-tests.sh -- offline harness for repo_lint.py (DOCFIX-074).
# Builds throwaway fixture repos with planted violations; asserts each lint class
# fires, and that a clean fixture passes. Mutates nothing outside $TMP.
# Exit: 0 all pass | 1 any case failed.  ASCII + LF.
set -uo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO="$(cd "$HERE/../.." && pwd)"
TMP="$(mktemp -d)"; trap 'rm -rf "$TMP"' EXIT
PASS=0; FAIL=0

mkrepo() { # mkrepo <name>  -> minimal clean fixture repo
  local d="$TMP/$1"; mkdir -p "$d/runbooks" "$d/scripts" "$d/docs"
  printf '# readme\n' > "$d/README.md"
  printf 'applications: {}\n' > "$d/bundle.yaml"
  printf '## D-001\ntext\n' > "$d/docs/design-decisions.md"
  printf '#!/usr/bin/env bash\necho ok\n' > "$d/scripts/real.sh"
  printf '# phase\n```bash\nbash scripts/real.sh\n```\n' > "$d/runbooks/phase-x.md"
  echo "$d"
}
run() { # run <want_rc> <regex> <label> <dir>
  local out rc
  out="$(python3 "$REPO/scripts/repo_lint.py" "$4" 2>&1)"; rc=$?
  if [[ "$rc" == "$1" ]] && grep -qE "$2" <<<"$out"; then
    echo "  PASS  $3"; PASS=$((PASS+1))
  else
    echo "  FAIL  $3 (rc=$rc want=$1)"; echo "$out" | sed 's/^/        /' | head -5; FAIL=$((FAIL+1))
  fi
}

D=$(mkrepo clean);            run 0 'PASS: repo lint' "T1 clean fixture passes" "$D"
D=$(mkrepo l1); printf 'line with \xe2\x80\x94 dash\n' >> "$D/runbooks/phase-x.md"
                              run 1 'L1 .*non-ASCII' "T2 L1 non-ASCII FAILS" "$D"
D=$(mkrepo l1b); printf 'crlf line\r\n' >> "$D/scripts/real.sh"
                              run 1 'L1 .*CR byte' "T3 L1 CRLF FAILS" "$D"
D=$(mkrepo l2); printf 'bind to provider-vip here\n' >> "$D/runbooks/phase-x.md"
                              run 1 'L2 .*retired space' "T4 L2 stale space FAILS" "$D"
D=$(mkrepo l2b); printf 'the provider-vip plane is retired (D-060)\n' >> "$D/runbooks/phase-x.md"
                              run 0 'PASS' "T5 L2 historical context EXEMPT" "$D"
D=$(mkrepo l3); printf 'run scripts/ghost.sh now\n' >> "$D/runbooks/phase-x.md"
                              run 1 'L3 .*missing scripts/ghost.sh' "T6 L3 ghost ref FAILS" "$D"
D=$(mkrepo l4); printf 'use phase-00-teardown.sh --apply\n' >> "$D/runbooks/phase-x.md"
                              run 1 'L4 .*deprecated' "T7 L4 deprecated ref FAILS" "$D"
D=$(mkrepo l5); printf '## D-001\ndupe\n' >> "$D/docs/design-decisions.md"
                              run 1 'L5 D-001 defined 2' "T8 L5 numbering collision FAILS" "$D"
D=$(mkrepo l6); printf '```bash\nscripts/real.sh --apply\n```\n' >> "$D/runbooks/phase-x.md"
                              run 1 'L6 .*bare script invocation' "T9 L6 bare invoke FAILS" "$D"

echo; echo "RESULT: PASS=$PASS FAIL=$FAIL"
[[ "$FAIL" -eq 0 ]] && { echo "ALL PASS"; exit 0; } || exit 1