diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..56c9f57 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,127 @@ +name: CI + +on: [pull_request, push] + +env: + CARGO_TERM_COLOR: always + RUSTFLAGS: --deny warnings + RUSTDOCFLAGS: --deny warnings + +jobs: + clippy: + name: Clippy + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache Cargo artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install alsa and udev + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + + - name: Run clippy lints + run: cargo clippy --locked --workspace --all-targets --all-features -- --deny warnings + + format: + name: Format + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache Cargo artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + + - name: Run cargo fmt + run: cargo fmt --all -- --check + + doc: + name: Docs + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache Cargo artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install alsa and udev + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + + - name: Check documentation + run: cargo doc --locked --workspace --all-features --document-private-items --no-deps + + test: + name: Tests + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache Cargo artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install alsa and udev + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + + - name: Test + run: cargo test --release -- --test-threads 2 + + - name: Generate code coverage + run: cargo llvm-cov --all-features --no-cfg-coverage --workspace --lcov --output-path lcov.info + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index d9336bf..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Test - -on: [pull_request, push] - -env: - CARGO_TERM_COLOR: always - -jobs: - test: - strategy: - matrix: - os: [windows-latest, ubuntu-latest, macos-latest] - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} - - - uses: dtolnay/rust-toolchain@stable - - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - if: runner.os == 'linux' - - - name: Install cargo-llvm-cov - uses: taiki-e/install-action@cargo-llvm-cov - - - name: Clippy - run: cargo clippy --verbose -- -D warnings - - - name: Test - run: cargo test --release -- --test-threads 2 - - - name: Generate code coverage - run: cargo llvm-cov --all-features --no-cfg-coverage --workspace --lcov --output-path lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: lcov.info \ No newline at end of file diff --git a/src/test.rs b/src/test.rs index 9d3afd6..297c0c6 100644 --- a/src/test.rs +++ b/src/test.rs @@ -10,7 +10,6 @@ mod tests { #[cfg(not(debug_assertions))] use std::fs; - #[expect(dead_code)] fn solve + IntoIterator>( levels: &[Level], range: R,