#!/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"