| name: CI |
| |
| on: [push, pull_request] |
| |
| jobs: |
| test: |
| name: Test Suite |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| rust: |
| - stable |
| - beta |
| - nightly |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions-rs/toolchain@v1 |
| with: |
| toolchain: ${{ matrix.rust }} |
| override: true |
| - name: Run cargo test |
| run: cargo test |
| |
| test-msrv: |
| name: Test Suite |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| rust: |
| - 1.19.0 # Oldest supported (first version with numeric fields in struct patterns) |
| - 1.20.0 # Oldest supported with tuple_ty |
| - 1.31.0 # Oldest supported with allow(clippy) |
| - 1.36.0 # Oldest supported with MaybeUninit |
| - 1.40.0 # Oldest supported with cfg(doctest) |
| - 1.51.0 # Oldest supported with ptr::addr_of! |
| - 1.65.0 # Oldest supported with stable const evaluation (sans cell) |
| - stable |
| - beta |
| - nightly |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions-rs/toolchain@v1 |
| with: |
| toolchain: ${{ matrix.rust }} |
| override: true |
| - name: Run cargo test |
| # Exclude doctests here, as we don't want to clutter docs themselves |
| # with backwards compatibility workarounds. |
| run: cargo test --lib |
| |
| nightly: |
| name: Test Suite (nightly features) |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions-rs/toolchain@v1 |
| with: |
| toolchain: nightly |
| override: true |
| - name: Run cargo test |
| # `--lib` prevents doctests from being run. |
| # This is due to `unstable_const` requiring extra `feature(...)` directives |
| # which the doctests do not have. |
| run: cargo test --all-features --lib |
| |
| miri: |
| name: Test Suite (Miri) |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Install Miri |
| run: | |
| rustup toolchain install nightly --component miri |
| rustup override set nightly |
| cargo miri setup |
| - name: Test with Miri |
| run: | |
| cargo miri test |
| cargo miri test --all-features |
| |
| style: |
| name: lints and formatting |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions-rs/toolchain@v1 |
| with: |
| toolchain: 1.51.0 # pin a version for reproducible results |
| components: rustfmt |
| override: true |
| - name: Check warnings |
| run: RUSTFLAGS="-D warnings" cargo check --all-targets |
| - name: Check formatting |
| run: cargo fmt -- --check |