beam: Q85 — lane CHECK grades module coverage; zeller_dow cell pins calendar branch
This commit is contained in:
1 parent
e3f4875709
commit
c05f05a87f
5 files changed
+646
No files matched your search
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env bash
|
||||
# CHECK-q85 -- a lane module no collected cell reads is now a graded fault in
|
||||
# beam's gate, and the six modules the census found invisible have cells
|
||||
# (volt, 2026-11-02).
|
||||
#
|
||||
# Five legs:
|
||||
# selftest check_coverage.py's own 13 cells: import / chain / path-literal
|
||||
# coverage, an uncovered module named, a waiver with a reason, a
|
||||
# waiver with none, a waiver naming a gone file, a waiver left
|
||||
# over a covered module, a gate-invoked module, no-tests and
|
||||
# unparseable-test rc 2, and the mutation cell (delete the one
|
||||
# test -> 0 becomes 1)
|
||||
# live the lane reads 0 today, and one planted module makes it 1 with
|
||||
# the name printed, then 0 again when the plant is removed
|
||||
# before the same tool over the lane at HEAD (no repair): rc 1, and the
|
||||
# names it prints are the pre-repair census
|
||||
# mutant Q85's unpinned docstring claim: M-JUL (the Julian leap branch
|
||||
# dropped) reds test_zeller_dow; the unmutated copy is green
|
||||
# gate the lane's own CHECK reads 0 with the coverage leg inside it
|
||||
#
|
||||
# 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"
|
||||
COV="$LANE/check_coverage.py"
|
||||
WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q85.XXXXXX")" || exit 2
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
passed=0
|
||||
failed=0
|
||||
ungradable=0
|
||||
row() { printf ' %-11s %s\n' "$1" "$2"; }
|
||||
|
||||
if [ ! -f "$COV" ]; then
|
||||
echo "CHECK-q85: no $COV -- cannot grade" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# --- leg 1: the tool's selftest ---------------------------------------------
|
||||
python3 "$COV" --selftest >"$WORK/st.out" 2>&1
|
||||
st=$?
|
||||
if [ "$st" -eq 0 ]; then
|
||||
row selftest "PASS $(tail -n 1 "$WORK/st.out")"
|
||||
passed=$((passed + 1))
|
||||
else
|
||||
row selftest "FAULT rc=$st (want 0)"
|
||||
cat "$WORK/st.out"
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
|
||||
# --- leg 2: the live lane, and one planted module ---------------------------
|
||||
mkdir -p "$WORK/live"
|
||||
cp -a "$LANE/." "$WORK/live/"
|
||||
( cd "$WORK/live" && python3 check_coverage.py >"$WORK/live1.out" 2>&1 )
|
||||
l1=$?
|
||||
printf '"""a module no collected test reads."""\n\n\ndef stray():\n return 1\n' \
|
||||
>"$WORK/live/stray_module.py"
|
||||
( cd "$WORK/live" && python3 check_coverage.py >"$WORK/live2.out" 2>&1 )
|
||||
l2=$?
|
||||
rm -f "$WORK/live/stray_module.py"
|
||||
( cd "$WORK/live" && python3 check_coverage.py >"$WORK/live3.out" 2>&1 )
|
||||
l3=$?
|
||||
if [ "$l1" -eq 0 ] && [ "$l2" -eq 1 ] && [ "$l3" -eq 0 ] \
|
||||
&& grep -q "UNCOVERED \+stray_module" "$WORK/live2.out"; then
|
||||
row live "PASS lane 0, planted module 1 (named), removed 0"
|
||||
passed=$((passed + 1))
|
||||
else
|
||||
row live "FAULT lane rc=$l1 (want 0), planted rc=$l2 (want 1), removed rc=$l3 (want 0)"
|
||||
grep -E "UNCOVERED|^coverage:" "$WORK/live1.out" "$WORK/live2.out" "$WORK/live3.out"
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
|
||||
# --- leg 3: the census the repair answers -----------------------------------
|
||||
# The no-repair baseline is e3f4875, the commit this repair closes against;
|
||||
# grading it with this tool must go red and name the uncovered modules.
|
||||
mkdir -p "$WORK/before"
|
||||
git -C "$ROOT" archive e3f4875 wizard-work/beam | tar -x -C "$WORK/before" 2>"$WORK/tar.err"
|
||||
tar_rc=$?
|
||||
cp "$COV" "$WORK/before/wizard-work/beam/check_coverage.py"
|
||||
( cd "$WORK/before/wizard-work/beam" && python3 check_coverage.py >"$WORK/before.out" 2>&1 )
|
||||
b=$?
|
||||
names="$(grep -c 'UNCOVERED ' "$WORK/before.out")"
|
||||
if [ "$tar_rc" -eq 0 ] && [ "$b" -eq 1 ] && [ "$names" -ge 6 ]; then
|
||||
row before "PASS pre-repair lane rc=1, $names module(s) named: $(grep 'UNCOVERED ' "$WORK/before.out" | awk '{print $2}' | tr '\n' ' ')"
|
||||
passed=$((passed + 1))
|
||||
elif [ "$tar_rc" -ne 0 ]; then
|
||||
row before "UNGRADABLE git archive rc=$tar_rc"
|
||||
cat "$WORK/tar.err"
|
||||
ungradable=$((ungradable + 1))
|
||||
else
|
||||
row before "FAULT HEAD lane rc=$b (want 1), $names module(s) named (want >= 6)"
|
||||
tail -3 "$WORK/before.out"
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
|
||||
# --- leg 4: the M-JUL mutant dies ------------------------------------------
|
||||
mkdir -p "$WORK/mut"
|
||||
cp -a "$LANE/." "$WORK/mut/"
|
||||
( cd "$WORK/mut" && python3 -m unittest test_zeller_dow >"$WORK/m1.out" 2>&1 )
|
||||
m1=$?
|
||||
sed -i 's/^ leap = _julian_leap(y) if julian else _gregorian_leap(y)$/ leap = _gregorian_leap(y)/' \
|
||||
"$WORK/mut/zeller_dow.py"
|
||||
mutated="$(grep -c '^ leap = _gregorian_leap(y)$' "$WORK/mut/zeller_dow.py")"
|
||||
( cd "$WORK/mut" && python3 -m unittest test_zeller_dow >"$WORK/m2.out" 2>&1 )
|
||||
m2=$?
|
||||
if [ "$m1" -eq 0 ] && [ "$mutated" -eq 1 ] && [ "$m2" -eq 1 ] \
|
||||
&& grep -q "test_julian_leap_branch_is_the_witness" "$WORK/m2.out"; then
|
||||
row mutant "PASS clean 0, M-JUL 1 (julian-branch cell names itself)"
|
||||
passed=$((passed + 1))
|
||||
else
|
||||
row mutant "FAULT clean rc=$m1 (want 0), mutated rc=$m2 (want 1), patched lines=$mutated"
|
||||
tail -5 "$WORK/m2.out"
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
|
||||
# --- leg 5: the lane gate, with the leg inside it ---------------------------
|
||||
bash "$LANE/CHECK" >"$WORK/gate.out" 2>&1
|
||||
g=$?
|
||||
if [ "$g" -eq 0 ]; then
|
||||
row gate "PASS $(grep -E '^lane: [0-9]+ file' "$WORK/gate.out" | head -1)"
|
||||
passed=$((passed + 1))
|
||||
elif [ "$g" -eq 2 ]; then
|
||||
row gate "UNGRADABLE rc=2"
|
||||
tail -5 "$WORK/gate.out"
|
||||
ungradable=$((ungradable + 1))
|
||||
else
|
||||
row gate "FAULT rc=$g"
|
||||
tail -15 "$WORK/gate.out"
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "q85: $passed leg(s) passed, $failed fault(s), $ungradable ungradable"
|
||||
[ "$failed" -eq 0 ] || exit 1
|
||||
[ "$ungradable" -eq 0 ] || exit 2
|
||||
exit 0
|
||||
Reference in new issue
Block a user