Contributors

Change Nox
with confidence.

Build, test, format, and extend the system without crossing its architecture boundaries.

Local checks

Use Cargo and Nix together.

cargo fmt --all
cargo test --all-targets
cargo build --release
nix flake check

The repository also provides Nox tasks for repeatable project commands. Use the Nix shell when you need the declared formatter and toolchain environment.

Integration tests

Test behavior in temporary projects.

Build tests create realistic nox.build fixtures and exercise parsing, graph validation, duplicate bindings, C++ detection, run handlers, and temporary artifacts. New commands should test both successful output and the error path.

tests/
  parser_bindings.rs
  run_handlers.rs
  run_temporary_artifact.rs
Extension points

Keep language behavior at the edge.

Adding a target kind touches the model, parser, executor, toolchain/state boundary, integration tests, and documentation. Adding a language Rider should not add language assumptions to graph traversal. Direct file execution belongs in the Runner registry.

External projects

Test the user workflow.

Use a temporary project to verify missing dependencies, cycles, source and header changes, debug/release separation, parallel compilation, custom prefixes, and run argument forwarding. This catches integration failures that unit tests cannot see.