#!/bin/bash # Self-test for tools/anti-ai-lint.py. # Builds a synthetic AI-text fixture in a temp dir, asserts the linter # flags it, then verifies whitelist comments suppress the hit. set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) LINT="$SCRIPT_DIR/anti-ai-lint.py" tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT mkdir -p "$tmp/build/synthetic-ai.test" cat > "$tmp/build/synthetic-ai.test/index.html" <<'HTML' Synthetic AI sample

In today's evolving landscape

This is a comprehensive, robust, holistic solution that lets us leverage emerging trends.

We delve into the intricate tapestry of AI to navigate this pivotal moment.

Challenges and Future Prospects

HTML expect_finding() { # expect_finding python3 -c ' import json, sys data = json.loads(sys.argv[1]) target = sys.argv[2] hits = [f for site in data["sites"] for f in site["findings"] if f["name"] == target] if len(hits) != 1: print(f"expected exactly 1 finding for {target!r}, got {len(hits)}", file=sys.stderr) sys.exit(1) ' "$1" "$2" } expect_no_finding() { python3 -c ' import json, sys data = json.loads(sys.argv[1]) target = sys.argv[2] hits = [f for site in data["sites"] for f in site["findings"] if f["name"] == target] if hits: print(f"unexpected finding for {target!r}: {hits}", file=sys.stderr) sys.exit(1) ' "$1" "$2" } echo "[1] expecting FAIL on synthetic AI fixture..." report=$(python3 "$LINT" --json "$tmp/build" 2>/dev/null) && rc=0 || rc=$? if [ "$rc" -ne 1 ]; then echo "FAIL: expected exit 1, got $rc" >&2 echo "$report" >&2 exit 1 fi for term in "in today's evolving landscape" "Challenges and Future Prospects" \ "leverage" "comprehensive" "delve" "em-dash-3-bullet"; do expect_finding "$report" "$term" || exit 1 done echo " OK" echo "[2] expecting whitelist comment to suppress hits..." sed -i '4a\ ' \ "$tmp/build/synthetic-ai.test/index.html" report=$(python3 "$LINT" --json "$tmp/build" 2>/dev/null) || true for term in "leverage" "comprehensive" "delve" "em-dash-3-bullet"; do expect_no_finding "$report" "$term" || exit 1 done # fail-level "in today's evolving landscape" should still be reported expect_finding "$report" "in today's evolving landscape" || exit 1 echo " OK" echo "[3] expecting fail-level hit still triggers exit 1..." python3 "$LINT" "$tmp/build" >/dev/null 2>&1 && rc=0 || rc=$? if [ "$rc" -ne 1 ]; then echo "FAIL: expected exit 1, got $rc" >&2 exit 1 fi echo " OK" echo "[4] expecting clean exit on neutral fixture..." rm "$tmp/build/synthetic-ai.test/index.html" mkdir -p "$tmp/build/clean.test" echo '

Ein einfacher Satz ohne KI-Vokabular.

' \ > "$tmp/build/clean.test/index.html" rm -rf "$tmp/build/synthetic-ai.test" out=$(python3 "$LINT" "$tmp/build" 2>&1) && rc=0 || rc=$? if [ "$rc" -ne 0 ]; then echo "FAIL: clean fixture should exit 0, got $rc" >&2 echo "$out" exit 1 fi echo " OK" echo echo "all tests passed"