Merge pull request #347 from Jazzinghen/jazz/add_features_to_pyproject #618
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test Workflow | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- "*" | |
pull_request: | |
workflow_dispatch: | |
env: | |
RUST_BACKTRACE: 1 | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
- name: Run cargo check | |
run: cargo check | |
test: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
rust: | |
- { version: "1.77", name: MSRV } | |
- { version: stable, name: stable } | |
runs-on: ${{ matrix.os }} | |
name: Test Suite (${{ matrix.os }}, ${{ matrix.rust.name }}) | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install ${{ matrix.rust.name }} toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust.version }} | |
- name: Test (default features) | |
run: cargo test | |
- name: Test (UT1) | |
run: cargo test --features ut1 | |
- name: Test (no default features) | |
run: cargo test --no-default-features | |
- name: Test (serde) | |
run: cargo test --features serde | |
test_no_std: | |
strategy: | |
matrix: | |
target: [aarch64-unknown-none, thumbv6m-none-eabi] | |
name: no-std build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install nightly toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
components: rust-src | |
- name: Build no default features + no_std target ${{ matrix.target }} | |
run: cargo build --no-default-features --target=${{ matrix.target }} -Z build-std=core | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.77 | |
components: rustfmt, clippy | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Run cargo clippy | |
run: cargo clippy -- -D warnings | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
components: rustfmt, clippy | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Generate coverage report | |
run: | | |
cargo llvm-cov clean --workspace | |
cargo llvm-cov test --no-report --features=std -- --test-threads=1 | |
cargo llvm-cov test --no-report --tests --features=std -- compile_fail | |
cargo llvm-cov report --lcov > lcov.txt | |
env: | |
RUSTFLAGS: --cfg __ui_tests | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v4 | |
with: | |
files: ./lcov.txt | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: [check, test, test_no_std, lints, coverage] | |
if: github.ref_type == 'tag' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
components: rustfmt, clippy | |
- name: Publish to crates.io | |
env: | |
TOKEN: ${{ secrets.CRATESIO_API_TOKEN }} | |
run: | | |
cargo login $TOKEN | |
cargo publish |