Goal: Structure a Spanda project with manifests, dependencies, and in-language tests.
Examples:
examples/basics/07_in_language_tests.sdexamples/packages/basic_project/examples/packages/local_dependency/References: packages.md, spanda-toml.md
spanda init my_rover
Creates:
my_rover/
spanda.toml # manifest
src/main.sd # entry point
[package]
name = "my_rover"
version = "0.1.0"
[hardware]
targets = ["RoverV1"]
[safety]
level = "experimental"
Top-level test blocks run with spanda test:
module basics.math;
export fn clamp_speed(speed: Float) -> Float {
return speed;
}
test "clamp accepts in-range speed" {
assert(true);
}
spanda test examples/basics/07_in_language_tests.sd
spanda test --project # all tests in current package
Failed assert(...) calls fail the test run — wire these into CI alongside spanda check.
Registry dependency (when registry is configured):
[dependencies]
spanda-navigation = "0.1.0"
Local path dependency:
[dependencies]
shared_utils = { path = "shared_utils" }
See examples/packages/local_dependency/ for a working layout.
spanda build --project .
spanda install
build resolves dependencies and prepares the project; exact artifacts depend on your targets
(interpreter today, native codegen experimental).
spanda check examples/basics/07_in_language_tests.sd
spanda test examples/basics/07_in_language_tests.sd
spanda check examples/packages/basic_project/src/main.sd
spanda init lesson9_bottest "robot has lidar" block with assert(true) (expand later with real checks)spanda test from the project directory