#!/usr/bin/env bash # Build every valid example, then prove invalid TeX and lint fixtures fail. # # ./scripts/test.sh # # This is a regression test for assets/supertensor.sty: the examples exercise # faces, stacks, index faces, every pattern, shared caption lanes, connectors, # the meaning box and the signature. set -uo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" fail=0 for f in "$ROOT"/tests/*.tex "$ROOT"/examples/*.tex; do [[ -e "$f" ]] || continue name="$(basename "$f")" if "$ROOT/scripts/build.sh" "$f" >/dev/null 2>&1; then echo " ok $name" else echo " FAIL $name" fail=$((fail+1)) fi done for f in "$ROOT"/tests/invalid/*.tex; do [[ -e "$f" ]] || continue name="$(basename "$f")" if ST_SKIP_LINT=1 "$ROOT/scripts/build.sh" "$f" >/dev/null 2>&1; then echo " FAIL $name (invalid fixture built cleanly)" fail=$((fail+1)) else echo " ok $name (rejected by package/build)" fi done for f in "$ROOT"/tests/lint-invalid/*.tex; do [[ -e "$f" ]] || continue name="$(basename "$f")" if python3 "$ROOT/scripts/lint.py" "$f" >/dev/null 2>&1; then echo " FAIL $name (invalid fixture passed lint)" fail=$((fail+1)) else echo " ok $name (rejected by lint)" fi done if [[ $fail -gt 0 ]]; then echo "$fail failing check(s); rerun the reported build or lint command to inspect" >&2 exit 1 fi echo "all positive and negative checks passed"