The lab's check ran in the TypeScript toolchain, which holds no Go compiler, so the replays register was never compiled before a merge. merge-check.sh now declares replays/merge-check.sh as its Go part, which the build seat runs in the Go toolchain: gofmt, go vet and the register's own tests. Both new replays are proved: each fails on the commit before its fix and passes on it.
29 lines
1.3 KiB
Bash
29 lines
1.3 KiB
Bash
#!/bin/sh
|
|
# mesh-check-toolchain: go
|
|
#
|
|
# The Go part of the lab's own check (novox/hq issue 302): the replays register and its prover, 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 replays/merge-check.sh`) — and by hand, from anywhere:
|
|
# `sh replays/merge-check.sh`.
|
|
#
|
|
# 1. formatted and vetted — the register, the replays and the prover compile, tests included;
|
|
# 2. the tests that need nothing but Go and git: every replay registered whole (TestEveryReplayIsWhole),
|
|
# and the bed's reading of what a change touches.
|
|
#
|
|
# **Said, never passed silently**: the replays themselves raise containers and a bus of the release the mesh
|
|
# runs; this container holds no container runtime, so they are not run here. They run from the lab's main,
|
|
# reviewed, in the gate of every core change, and a change to one is proven by `go run ./cmd/prove` before
|
|
# it merges.
|
|
set -eu
|
|
cd "$(dirname "$0")"
|
|
|
|
unformatted=$(gofmt -l .)
|
|
if [ -n "$unformatted" ]; then
|
|
echo "not gofmt'd:"
|
|
echo "$unformatted"
|
|
exit 1
|
|
fi
|
|
go vet ./...
|
|
go test -count=1 -run '^(TestEveryReplayIsWhole|TestTheBedProvesWhatTheChangeTouches)$' .
|
|
echo "NOT RUN HERE: the replays themselves — they raise containers, and this container holds no container runtime"
|