name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always RUSTFLAGS: --deny warnings RUSTDOCFLAGS: --deny warnings jobs: # Run tests test: name: Tests runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: | sudo apt-get update sudo apt-get install --no-install-recommends \ libasound2-dev libudev-dev libwayland-dev \ libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Install cargo-nextest run: cargo install cargo-nextest --locked - name: Run tests with nextest run: | cargo nextest run \ --all-features \ --all-targets # Workaround for https://github.com/rust-lang/cargo/issues/6669 cargo test \ --locked \ --workspace \ --all-features \ --doc # Run clippy lints clippy: name: Clippy runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Install dependencies run: | sudo apt-get update sudo apt-get install --no-install-recommends \ libasound2-dev libudev-dev libwayland-dev \ libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Run clippy lints run: | cargo clippy \ --locked \ --workspace \ --all-features \ -- \ --deny warnings # Check formatting format: name: Format runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run cargo fmt run: | cargo fmt \ --all \ -- \ --check # Check documentation doc: name: Docs runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Install dependencies run: | sudo apt-get update sudo apt-get install --no-install-recommends \ libasound2-dev libudev-dev libwayland-dev \ libxkbcommon-dev - name: Populate target directory from cache uses: Leafwing-Studios/cargo-cache@v2 with: sweep-cache: true - name: Check documentation run: | cargo doc \ --locked \ --workspace \ --all-features \ --document-private-items \ --no-deps