Skip to content

chore: unhide clippy.toml #887

chore: unhide clippy.toml

chore: unhide clippy.toml #887

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
accept:
name: Accept
runs-on: ubuntu-latest
needs: [test, feature-checks, clippy, docs, fmt]
steps:
- name: Accept
run: "true"
test:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
rust: ["stable", "beta", "nightly", "1.65"] # MSRV
flags: ["--no-default-features", "", "--all-features"]
exclude:
# Skip because some features have higher MSRV.
- rust: "1.65" # MSRV
flags: "--all-features"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: exclude nightly features
if: ${{ matrix.rust }} != 'nightly'
run: |
sed -i 's/nightly = \[\]//g' Cargo.toml
sed -i 's/generic_const_exprs = \["nightly"\]//g' Cargo.toml
- uses: Swatinem/rust-cache@v2
# Only run tests on latest stable and above
- name: Check
if: ${{ matrix.rust == '1.65' }} # MSRV
run: cargo check ${{ matrix.flags }}
# Cargo doc test is not included in `--all-targets` so we call it separately.
# See <https://github.com/rust-lang/cargo/issues/6669>
# Cargo doc test also doesn't support `--no-run`, so we run it but
# have it just print `--help`.
- name: Build tests
if: ${{ matrix.rust != '1.65' }} # MSRV
run: |
cargo test --workspace ${{ matrix.flags }} --all-targets --no-run
cargo test --workspace ${{ matrix.flags }} --doc -- --help
- name: Run tests
if: ${{ matrix.rust != '1.65' }} # MSRV
run: |
cargo test --workspace ${{ matrix.flags }} --all-targets -- --nocapture
cargo test --workspace ${{ matrix.flags }} --doc -- --nocapture
feature-checks:
name: Feature checks
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-hack
- uses: Swatinem/rust-cache@v2
- name: cargo hack
run: |
cargo hack check \
--feature-powerset --exclude-features nightly,generic_const_exprs \
--depth 1
# codecov:
# # See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/source-based-code-coverage.html>
# name: Coverage
# runs-on: ubuntu-latest
# timeout-minutes: 30
# steps:
# - uses: actions/checkout@v4
# - uses: dtolnay/rust-toolchain@nightly
# with:
# components: llvm-tools-preview
# - uses: Swatinem/rust-cache@v2
# - uses: taiki-e/install-action@cargo-llvm-cov
# - name: Generate code coverage
# env:
# # Covered tests are slower, so reduce the test load. (We also shouldn't
# # depend too much on case generation for coverage).
# PROPTEST_CASES: 5
# run: |
# # Generate profiles, but do not merge them
# cargo llvm-cov --no-report --workspace --all-features --all-targets -- --nocapture
# cargo llvm-cov --no-report --workspace --all-features --doc -- --nocapture
# - name: Merge profiles
# run: cargo llvm-cov --no-run --lcov --output-path lcov.info
# - name: Submit to codecov.io
# uses: codecov/codecov-action@v3
# with:
# token: ${{ secrets.CODECOV_TOKEN }} # Optional for public repos
# files: lcov.info
# fail_ci_if_error: true
# verbose: true
clippy:
name: Clippy
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@clippy
- run: cargo clippy --workspace --all-features
env:
RUSTFLAGS: -Dwarnings
docs:
name: Docs
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rust-docs
- run: cargo doc --workspace --all-features --no-deps --document-private-items
env:
RUSTDOCFLAGS: "--cfg doc_cfg -D warnings"
fmt:
name: Fmt
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- run: cargo fmt --all --check
cargo-deny:
name: Cargo deny check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check all