#!/usr/bin/env bash # Row 300 gate run 1 (brief R6-N1): npm ci (root and packages/webui), the new test file whole, the # webui suite whole, then mutant M12. Stops at the first red. FROM= resumes at a step. set -u -o pipefail WT=/mnt/storage/scratch/launchpad-r300/wt OUT=$WT/agents/launchpad/work/queue-300/run1 LOG=/mnt/storage/scratch/launchpad-r300/run1 FROM=${FROM:-npm-root}; TAG=${TAG:-} mkdir -p $LOG export TMPDIR=$(mktemp -d /mnt/storage/scratch/tmp/gXXXXXX) echo "start $(date -u +%H:%M:%SZ) FROM=$FROM TAG=$TAG TMPDIR $TMPDIR head $(git -C $WT rev-parse HEAD)" >> $LOG/summary.txt [ -z "$(git -C $WT status --porcelain)" ] || { echo "STOP worktree not clean" | tee -a $LOG/summary.txt; exit 9; } on=0 step() { # name limit dir cmd... local name=$1 limit=$2 dir=$3; shift 3 [ $on = 1 ] || [ $name = $FROM ] || return 0; on=1 local t0=$(date +%s%N) ( cd $dir && timeout -k 10 $limit "$@" ) > $LOG/$name$TAG.log 2>&1 local rc=$? local ms=$(( ($(date +%s%N) - t0) / 1000000 )); local dt=$((ms/1000)).$(printf %03d $((ms%1000))) echo "$name$TAG rc=$rc seconds=$dt limit=$limit $(date -u +%H:%M:%SZ)" | tee -a $LOG/summary.txt [ $rc -eq 0 ] || { echo "STOP at $name$TAG" | tee -a $LOG/summary.txt; exit $rc; } } step npm-root 900 $WT npm ci --ignore-scripts step npm-webui 900 $WT/packages/webui npm ci --ignore-scripts step new-file 300 $WT/packages/webui node --test tests/user-option-swap.test.mjs step webui 600 $WT/packages/webui node --test tests/ [ -z "$(git -C $WT status --porcelain)" ] || { echo "STOP worktree dirty after the suite" | tee -a $LOG/summary.txt; git -C $WT status --porcelain >> $LOG/summary.txt; exit 9; } echo "SUITES GREEN $(date -u +%H:%M:%SZ)" | tee -a $LOG/summary.txt python3 -B $OUT/mutants.py rc=$?; echo "MUTANTS rc=$rc $(date -u +%H:%M:%SZ)" | tee -a $LOG/summary.txt; exit $rc