Files
troupe-standup/CHECK-q84
T

97 lines
4.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# CHECK-q84 -- the interval-overlap cells still pin the three things Q84's
# done-means names, and the cells still bite.
#
# Q84 was opened on `wizard-work/beam/interval_overlap.py` and repaired at
# `b14d2e4` (12 cells; `bash wizard-work/beam/CHECK` 202 -> 214 tests, rc 0);
# the pipe accepted the fix in full in reply 121, and no closure record was
# ever appended, so `tools/queue_claim_check.py` kept listing Q84 OPEN. This
# guard is what the closure record cites.
#
# Four legs:
# cells the 12 cells collect and pass in the lane (rc 0, `Ran 12`)
# bind the cell file names no host directory, and the module docstring
# still carries both entry points and both complexity bounds
# oracle an integer-set oracle that is NOT the module's own brute force --
# 9,724 ordered tuples plus 3,000 seeded random cases -- agrees with
# both entry points; five mutants of the module are each killed by a
# NAMED cell, with an unmutated control green
# teeth the same single structural cell reads rc 0 on the real lane and
# rc 1 on a poisoned copy whose `has_any_overlap` answers through
# `find_overlapping_pairs` -- so the green above is the cell's teeth,
# not a cell that cannot fail
#
# Exit codes: 0 all legs passed, 1 a fault, 2 could not grade.
set -u
set -o pipefail
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 2
ROOT="$(pwd)"
LANE="$ROOT/wizard-work/beam"
MOD="$LANE/interval_overlap.py"
CELLS="$LANE/test_interval_overlap.py"
VERIFY="$ROOT/wizard-work/volt/q84-closure/q84_verify.py"
PY="${PYTHON:-python3}"
CELL="test_interval_overlap.IntervalOverlapTest.test_has_any_overlap_does_not_build_pair_list"
for f in "$MOD" "$CELLS" "$VERIFY"; do
if [ ! -f "$f" ]; then
printf 'CANNOT GRADE: missing %s\n' "$f"
exit 2
fi
done
WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q84.XXXXXX")" || exit 2
trap 'rm -rf "$WORK"' EXIT
passed=0
failed=0
row() { printf ' %-7s %s\n' "$1" "$2"; }
verdict() { if [ "$2" -eq 0 ]; then passed=$((passed + 1)); else failed=$((failed + 1)); fi; row "$1" "$3"; }
# --- leg 1: the cells collect and pass --------------------------------------
out="$(cd "$LANE" && "$PY" -m unittest test_interval_overlap 2>&1)"; crc=$?
ran="$(printf '%s' "$out" | sed -n 's/^Ran \([0-9]*\) test.*/\1/p' | tail -1)"
verdict cells \
"$([ "$crc" -eq 0 ] && [ "${ran:-0}" -eq 12 ] && echo 0 || echo 1)" \
"rc=$crc Ran ${ran:-0} (want 12) $(printf '%s' "$out" | tail -1)"
# --- leg 2: no host binding, and the docstring still states the claims ------
# Only the code form `^sys.path.insert(0, "` counts; a path quoted in prose is
# the history of a defect, not a binding.
quoted="$(grep -c '^sys\.path\.insert(0, "' "$CELLS")"
FLAT="$WORK/module.flat"
tr -s '[:space:]' ' ' < "$MOD" > "$FLAT"
namespair="$(grep -c 'find_overlapping_pairs' "$FLAT")"
namesbool="$(grep -c 'has_any_overlap' "$FLAT")"
boundk="$(grep -c 'O(n log n + k)' "$FLAT")"
boundn="$(grep -c 'O(n log n) and stops at the first' "$FLAT")"
verdict bind \
"$([ "$quoted" -eq 0 ] && [ "$namespair" -ge 1 ] && [ "$namesbool" -ge 1 ] \
&& [ "$boundk" -ge 1 ] && [ "$boundn" -ge 1 ] && echo 0 || echo 1)" \
"quotedBinds=$quoted names-pair=$namespair names-bool=$namesbool bounds=$boundk/$boundn"
# --- leg 3: the independent oracle, and the mutant battery ------------------
"$PY" "$VERIFY" --repo "$ROOT" --json "$WORK/rows.json" > "$WORK/verify.log" 2>&1; vrc=$?
killed="$(sed -n 's/.*"mutants_killed": \([0-9]*\).*/\1/p' "$WORK/rows.json" | head -1)"
cases="$(sed -n 's/.*"cases": \([0-9]*\).*/\1/p' "$WORK/rows.json" | head -1)"
verdict oracle \
"$([ "$vrc" -eq 0 ] && [ "${killed:-0}" -eq 5 ] && [ "${cases:-0}" -eq 9724 ] && echo 0 || echo 1)" \
"rc=$vrc mutants-killed=${killed:-0}/5 exhaustive-cases=${cases:-0} $(grep '^q84 verify:' "$WORK/verify.log" | tail -1)"
# --- leg 4: the structural cell has teeth -----------------------------------
ctl="$(cd "$LANE" && "$PY" -m unittest "$CELL" 2>&1)"; krc=$?
"$PY" "$VERIFY" --repo "$ROOT" --poison "$WORK/poison" > "$WORK/poison.log" 2>&1; prc=$?
pout="$(cd "$WORK/poison/wizard-work/beam" && "$PY" -m unittest "$CELL" 2>&1)"; zrc=$?
pnamed="$(printf '%s' "$pout" | grep -c 'test_has_any_overlap_does_not_build_pair_list')"
verdict teeth \
"$([ "$krc" -eq 0 ] && [ "$prc" -eq 0 ] && [ "$zrc" -eq 1 ] && [ "$pnamed" -ge 1 ] && echo 0 || echo 1)" \
"clean rc=$krc poison-built rc=$prc poisoned-cell rc=$zrc (want 1) named=$pnamed"
if [ "$failed" -eq 0 ]; then
echo "q84: $passed leg(s), 0 fault(s), rc 0"
exit 0
fi
echo "q84: $passed passed, $failed fault(s), rc 1"
exit 1