#!/usr/bin/env bash # Dewey's two extra row 143 mutants: the instance and repo conditions in #specThread. # Usage: extra-mutants.sh . Restores broker.mjs on exit. set -u WT=$1; OUT=$(mkdir -p "$2" && cd "$2" && pwd) || exit 2; cd "$WT" || exit 2 F=packages/bus/src/broker.mjs; cp "$F" "$OUT/broker.bak" || exit 2; trap 'cp "$OUT/broker.bak" "$F"' EXIT one() { node -e 'const fs=require("fs");const[f,a,b]=process.argv.slice(1);const s=fs.readFileSync(f,"utf8");if(s.split(a).length!==2){console.error("match!=1");process.exit(3)}fs.writeFileSync(f,s.replace(a,()=>b))' "$F" "$2" "$3" || { echo "$1: edit failed"; return; } setsid -w timeout -k 10 400 node --test packages/bus/tests/spec-review.test.mjs > "$OUT/$1.out" 2>&1; rc=$? echo "$1: exit $rc; $(grep -E '^ℹ (tests|pass|fail) ' "$OUT/$1.out" | tr '\n' ' ')"; grep -E '^✖' "$OUT/$1.out" | sort -u | sed 's/^/ failed: /' cp "$OUT/broker.bak" "$F"; } one d1-any-instance "AND t.owner=? AND t.instance=? AND p.repo=?" "AND t.owner=? AND (t.instance=? OR 1) AND p.repo=?" one d2-any-project "AND t.owner=? AND t.instance=? AND p.repo=?" "AND t.owner=? AND t.instance=? AND (p.repo=? OR 1)"