mesh-delivery is the delivery's seat and the module holding it, which answers the seat's verbs with tools of the same names. Discovery keyed the seat's verbs and the module's tools in one namespace, so the module's tool took the key and the seat was listed with no verb; and every address with the name resolved to the seat, so neither the seat's verbs nor the module's tools could be called. The keys are apart, and `<node>/<module>.<tool>` reaches the module when the module serves it (novox/hq issue 284).
46 lines
2.2 KiB
Bash
46 lines
2.2 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 ./...)
|
|
bundleless=""
|
|
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$')
|
|
# What of the console launches no bundle runs anyway: how an address resolves (novox/hq issue 284).
|
|
bundleless='^TestASeatAndAModuleOfOneNameAreEachReached$'
|
|
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
|
|
if [ -n "$bundleless" ]; then
|
|
CGO_ENABLED=0 go test -count=1 -run "$bundleless" ./internal/console
|
|
fi
|
|
echo "NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry"
|