name: CI
on:
push:
branches: ["master"]
pull_request:
branches: ["**"]
jobs:
fmt:
name: rustfmt check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: default
default: true
components: rustfmt
toolchain: nightly
- run: cargo +nightly fmt --all -- --check
- uses: crate-ci/typos@v1
lint-test:
name: clippy lint and unit tests
runs-on: ubuntu-latest
strategy:
matrix:
profile:
- ""
- "--release"
toolchain:
- beta
- nightly
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: default
default: true
components: clippy
toolchain: ${{matrix.toolchain}}
- uses: actions/cache@v4
with:
path: |
/home/runner/.cargo
**/target
key: ${{matrix.toolchain}}${{matrix.profile}}-${{hashFiles('**/Cargo.lock')}}
- name: cargo clippy
run: cargo +${{matrix.toolchain}} clippy --all --tests --features serde ${{matrix.profile}}
- name: cargo test
run: "cargo +${{matrix.toolchain}} test --all --features serde ${{matrix.profile}}"
miri:
name: miri tests
runs-on: ubuntu-latest
strategy:
matrix:
profile:
- ""
- "--release"
toolchain:
- nightly
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
default: true
components: miri
toolchain: ${{matrix.toolchain}}
- uses: actions/cache@v4
with:
path: |
/home/runner/.cargo
**/target
key: ${{matrix.toolchain}}${{matrix.profile}}-${{hashFiles('**/Cargo.lock')}}-miri
- name: cargo miri test
run: cargo +${{matrix.toolchain}} miri test --features serde ${{ matrix.profile }}