59 lines
2.5 KiB
Bash
Executable File
59 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# CHECK-q153 -- a beam test that graded a file nobody committed, repaired, and
|
|
# the lane gate that now reds on the class before it lands.
|
|
#
|
|
# WHAT WAS WRONG (measured at 096ba9b, before this tick's edits)
|
|
# wizard-work/beam/test_next_greater.py:3 was
|
|
# `sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")`. The host copy and
|
|
# the tree copy were byte-identical (sha256 f015c464...), so nothing looked
|
|
# wrong: run from a directory holding no next_greater.py the file read rc 0,
|
|
# and run beside a copy poisoned at next_greater_right it still read rc 0 --
|
|
# both answers came from the host path. On any other host the cell could not
|
|
# grade at all (ModuleNotFoundError). The lane's own CHECK read rc 0 over all
|
|
# 681 cells throughout, and the repo gate's import-resolve leg read the fault.
|
|
#
|
|
# WHAT THIS GRADES
|
|
# 1. wizard-work/volt/q153_verify.py -- six legs: the repo authority
|
|
# (import_resolve_check) at 0 faults; the file's binding parsed from `ast`
|
|
# (no absolute constant, `__file__` resolution, module-level assert that
|
|
# the import is HERE/next_greater.py); the pair copied outside the tree
|
|
# running rc 0 there; that copy with next_greater_right poisoned reading
|
|
# rc 1 (the cell grades the bytes beside it); the pre-repair binding put
|
|
# back reading rc 1 and naming the host path; and the lane guard's own
|
|
# selftest plus its live reading.
|
|
# 2. bash wizard-work/beam/CHECK -- rc 0 with the new bindings leg in place,
|
|
# so the gate that collects every cell is green on the repaired tree.
|
|
#
|
|
# rc 0 every leg holds rc 1 a leg failed rc 2 could not grade
|
|
set -u
|
|
ROOT="$(git -C "$(dirname "$0")" rev-parse --show-toplevel 2>/dev/null)" || exit 2
|
|
[ -n "$ROOT" ] || exit 2
|
|
cd "$ROOT" || exit 2
|
|
|
|
VERIFY=wizard-work/volt/q153_verify.py
|
|
LANE=wizard-work/beam/CHECK
|
|
[ -f "$VERIFY" ] && [ -f "$LANE" ] || {
|
|
echo "CANNOT GRADE: $VERIFY or $LANE is missing"; exit 2; }
|
|
|
|
legs=0
|
|
faults=0
|
|
leg() { # leg <name> <rc> <detail>
|
|
legs=$((legs + 1))
|
|
if [ "$2" -eq 0 ]; then printf 'PASS %-12s %s\n' "$1" "$3"
|
|
else printf 'FAIL %-12s %s\n' "$1" "$3"; faults=$((faults + 1)); fi
|
|
}
|
|
|
|
out="$(python3 "$VERIFY" 2>&1)"; rc=$?
|
|
leg verify "$rc" "$(printf '%s' "$out" | grep -m1 '^q153:')"
|
|
printf '%s\n' "$out" | grep -E '^(PASS|FAIL|UNGRADABLE) ' | sed 's/^/ /'
|
|
|
|
out="$(bash "$LANE" 2>&1)"; rc=$?
|
|
leg lane-check "$rc" "$(printf '%s' "$out" | grep -m1 -E '^(bindings:|CHECK:)' || true)"
|
|
|
|
if [ "$faults" -eq 0 ]; then
|
|
echo "q153: $legs leg(s), all passed"
|
|
exit 0
|
|
fi
|
|
echo "q153: $legs leg(s), $faults fault(s)"
|
|
exit 1
|