Skip to content

Development and Testing

Tobias Vorwachs edited this page Oct 27, 2026 · 1 revision

Development and testing

Build and checks

cargo build --release                  # Rust 1.90+, CMake (builds Opus)
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test

Local test server (testenv)

One local, unmodified Mumble 1.5 server in Docker, on port 44738. Needs Docker with compose, openssl and sqlite3.

cp testenv/.env.example testenv/.env   # edit the passwords; git-ignored
testenv/up.sh        # start (creates Lobby, Raid, AFK on first start)
testenv/down.sh      # stop, keep data
testenv/reset.sh     # wipe and restart

Parallel instances: MUMBOT_PORT_BASE=44838 MUMBOT_PROJECT=qa1 testenv/up.sh. Details: testenv/README.md.

Never test against public or third-party Mumble servers.

Live tests

Ignored by default; they need the test server.

MUMBOT_LIVE=1 cargo test -- --ignored --test-threads=1

CI gate

ci.yml runs on pull requests and on pushes to main. A changed-files job decides whether the heavy jobs run, so the required check always reports, even for docs-only changes. Rust formatting, clippy and tests must pass before merging.

Release flow

  1. Update the version in Cargo.toml and CHANGELOG.md.
  2. Push a tag vX.Y.Z on main.
  3. release.yml checks the tag against the Cargo version, builds the binaries and the multi-arch Docker image, and creates a draft GitHub release with SHA256SUMS.
  4. The maintainer reviews and publishes the release by hand.

Dependabot

Weekly (Mondays) updates for Cargo (minor and patch grouped, commit prefix chore(deps)) and GitHub Actions.

Conventions

  • Features start as a spec in specs/.
  • Small commits in Conventional Commits style; user-visible changes go into CHANGELOG.md.
  • No secrets in the repository.

Clone this wiki locally