Check the tool runtime's own code before it merges, every test on a bus of its own (hq ADR 0237)
A merge-check.sh, the repository's layer of the mesh's merge check (mesh/repo-check): format, vet, and node-tools' suite under the race detector. The tests shared one bus and had to run one package at a time; like the controller's (#97), each now starts a server of its own at the release go.mod pins, held to the catalogue's bus image by a test. What cannot run in the check — bundles that need @novox/mesh-sdk — is said as not tested.
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
# mesh-check-toolchain: go
|
||||
#
|
||||
# The tool runtime's own check (novox/hq ADR 0237 as amended): the second layer of a pull request's merge
|
||||
# check, `mesh/repo-check`, run by the build seat in the mesh's Go toolchain — and by hand.
|
||||
#
|
||||
# The gate — every machine of the facts snapshot composed with this change — is the build seat's first
|
||||
# layer (`mesh/merge-gate`), run because the mesh's module graph builds node-tools and mesh-tools from
|
||||
# here. This is the code's own: node-tools (Go) formatted, vetted and its suite, every test on a bus of its
|
||||
# own at the release the mesh runs (internal/meshtest), packages in parallel, under the race detector when
|
||||
# the toolchain has a C compiler.
|
||||
#
|
||||
# **Said, never passed silently**: the runtime's and the console's tests launch TypeScript and Python
|
||||
# bundles that import the mesh's own package (@novox/mesh-sdk), which comes from the package registry — and
|
||||
# a check of code nobody has approved is given no credential for it. Where node and that package are not
|
||||
# present those two packages are not tested here, and the TypeScript in node-tools/src neither.
|
||||
set -eu
|
||||
cd node-tools
|
||||
|
||||
unformatted=$(gofmt -l cmd internal)
|
||||
if [ -n "$unformatted" ]; then
|
||||
echo "not gofmt'd:"
|
||||
echo "$unformatted"
|
||||
exit 1
|
||||
fi
|
||||
CGO_ENABLED=0 go vet ./...
|
||||
|
||||
packages=$(go list ./...)
|
||||
if ! command -v node >/dev/null 2>&1 || [ ! -d node_modules/@novox/mesh-sdk ]; then
|
||||
echo "NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk"
|
||||
packages=$(printf '%s\n' "$packages" | grep -v -e '/internal/runtime$' -e '/internal/console$')
|
||||
fi
|
||||
if command -v gcc >/dev/null 2>&1; then
|
||||
CGO_ENABLED=1 go test -race -count=1 $packages
|
||||
else
|
||||
echo "NOT RACE-CHECKED: the toolchain holds no C compiler; the suite runs without the race detector"
|
||||
CGO_ENABLED=0 go test -count=1 $packages
|
||||
fi
|
||||
echo "NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry"
|
||||
Reference in New Issue
Block a user