#!/bin/sh # mesh-check-toolchain: go # # The proof of the operator's answers (novox/hq ADR 0259), the Go part of the lab's own check: run by the # build seat in the mesh's Go toolchain, its own container, because the lab's merge-check.sh declares it # (`# mesh-check-also: go asks/merge-check.sh`) — and by hand: `sh asks/merge-check.sh`. # # Formatted, vetted, and run against the clones beside the lab: on the build seat those are the controller, # the runtime and the catalogue **the mesh runs**, so every pull request of the lab proves the answers the # operator would get today. By hand, MESH_LAB_REPOS, or MESH_LAB_CONTROLLER, MESH_LAB_TOOLS and # MESH_LAB_CATALOGUE, point it at branches under review. It takes about four minutes when it runs. # # **Said, never passed silently**: where a clone is missing, or the controller predates the proof's fixture, # it says NOT RUN and why, in capitals, and passes; a proof that runs and fails, fails the check. set -eu cd "$(dirname "$0")" export GOPRIVATE=git.novox.be unformatted=$(gofmt -l .) if [ -n "$unformatted" ]; then echo "not gofmt'd:" echo "$unformatted" exit 1 fi sh -n live-acceptance.sh go vet ./... out=$(mktemp) status=0 go test -count=1 -timeout 25m -v -run '^TestTheOperatorsAnswerEndToEnd$' . >"$out" 2>&1 || status=$? grep -E '^(--- | --- |ok|FAIL|PASS)' "$out" || true if grep -q 'NOT RUN' "$out"; then echo "NOT RUN: THE PROOF OF THE OPERATOR'S ANSWERS DID NOT RUN HERE:" grep -o 'NOT RUN: .*' "$out" | head -3 fi [ "$status" -eq 0 ] || tail -60 "$out" rm -f "$out" exit "$status"