Skip to main content
This section covers development topics for contributors and maintainers of nono.

Topics

Testing

Integration test suites, running tests locally, and CI pipeline

Quick Start for Contributors

  1. Clone the repository
    git clone https://github.com/always-further/nono.git
    cd nono
    
  2. Build the project
    cargo build --release
    
  3. Run the test suite
    ./tests/run_integration_tests.sh
    
  4. Check formatting and lints
    cargo fmt -- --check
    cargo clippy -- -D warnings -D clippy::unwrap_used
    

Development Environment

Prerequisites

  • Rust (stable toolchain)
  • Platform-specific dependencies:
    • Linux: libdbus-1-dev, pkg-config
    • macOS: dbus, pkg-config (via Homebrew)

Building

# Debug build
cargo build

# Release build (used for integration tests)
cargo build --release

# Run with verbose logging
RUST_LOG=debug cargo run -- run --allow-cwd -- echo "test"

Code Standards

  • Error Handling: Use NonoError for all errors; propagate with ?
  • Unwrap Policy: Never use .unwrap() or .expect() - enforced by clippy
  • Unsafe Code: Restricted to FFI; must include // SAFETY: documentation
  • Path Security: All paths must be validated and canonicalized
See CLAUDE.md for complete coding standards.