name: Rust
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- stable
- beta
- nightly
steps:
- uses: actions/checkout@v3
- name: Install rustup
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
- name: Install cargo-hack
run: cargo install cargo-hack
- name: Run tests
run: cargo hack --feature-powerset test --verbose --lib --release
- name: Run doctests
run: cargo hack --feature-powerset test --verbose --doc
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rustup
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt
- name: Run rustfmt
run: cargo fmt --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rustup
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: clippy
- name: Install cargo-hack
run: cargo install cargo-hack
- name: Run clippy
run: cargo hack --feature-powerset clippy --verbose
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rustup
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Install cargo-hack
run: cargo install cargo-msrv
- name: Check rust version
run: cargo msrv verify
miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rustup
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: miri
- name: Install nextest
run: cargo install --locked cargo-nextest
- name: Run miri on libtests
run: cargo miri nextest run -j4
- name: Run miri on doctests
run: cargo miri test --doc