| name | test-go-binding |
| description | Build and test the NeMo Relay Go binding; use this for go/nemo_relay changes or Go-facing integration checks |
| author | NVIDIA Corporation and Affiliates |
| license | Apache-2.0 |
Build And Test Go Binding
Companion Guidance
Use karpathy-guidelines alongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.
Use this skill when the change is primarily in go/nemo_relay or the Go
binding behavior it depends on.
Important Constraint
The Go binding links against the shared FFI library. just test-go
builds that library for you, while just build-go remains useful when
you want an explicit build-only pass or need the artifact for other work.
Default Path
- Format changed Go packages with
cd go/nemo_relay && go fmt ./....
- Run Go tests with
just test-go.
- If any Rust files changed as part of the Go work, also run
cargo fmt --all, just test-rust, and
cargo clippy --workspace --all-targets -- -D warnings.
- Use
just build-go when you want an explicit build-only pass.
- Use
just ci=true test-go when you need the CI-style coverage and JUnit path.
- Expand to broader validation only if the change touched shared semantics.
Common Commands
just test-go
cd go/nemo_relay && go fmt ./...
cargo fmt --all
just test-rust
cargo clippy --workspace --all-targets -- -D warnings
just ci=true test-go
just build-go
In the test-go task, the ci variable is what is_true "{{ ci }}" checks.
Setting ci=true enables coverage_out and junit_out handling and adds
-coverprofile=coverage.out to go_test_cmd.
On macOS, also set DYLD_LIBRARY_PATH to the same ../../target/release
directory before running the raw go test command directly.
When To Escalate
- If the change touched
crates/ffi, also use test-ffi-surface.
- If the change touched
crates/core or shared runtime semantics, also use
validate-change.
References
go/nemo_relay/go.mod
go/nemo_relay/nemo_relay.go
README.md
docs/getting-started/installation.md
validate-change