name: CI
on: [push, pull_request]
jobs:
rustfmt:
name: rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install rust
run: rustup update --no-self-update stable && rustup default stable && rustup component add rustfmt --toolchain stable
- name: Check formatting
run: cargo fmt -- --check
clippy:
name: clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install rust
run: rustup update --no-self-update stable && rustup default stable && rustup component add clippy --toolchain stable
- name: Clippy check
run: cargo clippy --all-features -- -Dwarnings
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
include:
- rust: stable
- rust: beta
- rust: nightly
- rust: 1.86.0
steps:
- uses: actions/checkout@v2
- name: Install rust
run: rustup update --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }}
- name: Run tests
run: |
cargo build --verbose
cargo build --verbose --no-default-features
cargo test --verbose
cargo test --verbose --no-default-features
# Test with all features. But do not use the `unstable` feature on non-nightly toolchains
if [ "${{ matrix.rust }}" = "nightly" ]; then
cargo test --verbose --all-features
else
ALL_FEATURES_EXCEPT_UNSTABLE=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].features | keys | .[]' | grep -v 'unstable' | tr '\n' ' ')
cargo test --features "$ALL_FEATURES_EXCEPT_UNSTABLE"
fi