Add CI pipeline and basic test infrastructure #13

Closed
opened 2026-03-17 16:31:27 -04:00 by connor · 0 comments
Owner

Set up a CI pipeline (for Gitea Actions) and establish testing patterns that all crates should follow.

This issue covers:

  1. CI pipeline — create a CI configuration that runs on every push/PR:

    • cargo fmt --check — enforce consistent formatting
    • cargo clippy --workspace -- -D warnings — catch common mistakes
    • cargo build --workspace — verify everything compiles
    • cargo test --workspace — run all tests
    • cargo audit — check for known vulnerabilities in dependencies
  2. Test infrastructure:

    • Set up a test helper module/crate with utilities for creating temporary databases, test audio files, etc.
    • Define integration test patterns: each crate's tests/ directory should have at least one integration test
    • Consider using assert_cmd for testing CLI binaries
    • Provide a small set of test audio files (public domain / Creative Commons) or a script to generate them (e.g., using sox to create short silent audio files with metadata)
  3. Development tooling:

    • Makefile or justfile with common commands: build, test, lint, fmt, run
    • rust-toolchain.toml to pin the Rust version

Acceptance Criteria

  • CI pipeline runs on push and verifies fmt, clippy, build, and test
  • CI configuration file exists in the repo
  • rust-toolchain.toml pins the Rust edition/version
  • Test helper utilities exist for common test setup (temp DB, test files)
  • A Makefile or justfile exists with common development commands
  • At least a placeholder integration test exists in each MVP crate

Dependencies

  • Issue #1 (workspace scaffolding)
Set up a CI pipeline (for Gitea Actions) and establish testing patterns that all crates should follow. This issue covers: 1. **CI pipeline** — create a CI configuration that runs on every push/PR: - `cargo fmt --check` — enforce consistent formatting - `cargo clippy --workspace -- -D warnings` — catch common mistakes - `cargo build --workspace` — verify everything compiles - `cargo test --workspace` — run all tests - `cargo audit` — check for known vulnerabilities in dependencies 2. **Test infrastructure:** - Set up a test helper module/crate with utilities for creating temporary databases, test audio files, etc. - Define integration test patterns: each crate's `tests/` directory should have at least one integration test - Consider using `assert_cmd` for testing CLI binaries - Provide a small set of test audio files (public domain / Creative Commons) or a script to generate them (e.g., using `sox` to create short silent audio files with metadata) 3. **Development tooling:** - `Makefile` or `justfile` with common commands: `build`, `test`, `lint`, `fmt`, `run` - `rust-toolchain.toml` to pin the Rust version ### Acceptance Criteria - [ ] CI pipeline runs on push and verifies fmt, clippy, build, and test - [ ] CI configuration file exists in the repo - [ ] `rust-toolchain.toml` pins the Rust edition/version - [ ] Test helper utilities exist for common test setup (temp DB, test files) - [ ] A `Makefile` or `justfile` exists with common development commands - [ ] At least a placeholder integration test exists in each MVP crate ### Dependencies - Issue #1 (workspace scaffolding)
connor added the MVP label 2026-03-17 16:31:27 -04:00
connor started working 2026-03-18 15:22:09 -04:00
connor worked for 15 minutes 2026-03-18 15:37:45 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Total Time Spent: 15 minutes
connor
15 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Shanty/Main#13