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.
40 lines
1.9 KiB
Bash
40 lines
1.9 KiB
Bash
#!/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"
|