Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Improve CI, (almost) enforce MSRV #744

Improve CI, (almost) enforce MSRV

Improve CI, (almost) enforce MSRV #744

Workflow file for this run

name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_INCREMENTAL: 0
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
RUSTFLAGS: -D warnings
RUSTDOCFLAGS: -D warnings --cfg docsrs
jobs:
get-package-info:
runs-on: ubuntu-latest
outputs:
msrv: ${{ steps.msrv.outputs.metadata }}
name: ${{ steps.name.outputs.metadata }}
version: ${{ steps.version.outputs.metadata }}
steps:
- uses: actions/checkout@v5
- name: Get MSRV
id: msrv
uses: nicolaiunrein/[email protected]
with:
subcommand: 'package.rust_version'
- name: Get package name
id: name
uses: nicolaiunrein/[email protected]
with:
subcommand: 'package.name'
- name: Get package version
id: version
uses: nicolaiunrein/[email protected]
with:
subcommand: 'package.version'
build_test:
needs: get-package-info
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
rust:
- ${{ needs.get-package-info.outputs.msrv }}
- stable
- beta
- nightly
steps:
- uses: actions/checkout@v5
- name: Install toolchain
if: matrix.rust != needs.get-package-info.outputs.msrv
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy
- name: Install MSRV toolchain
if: matrix.rust == needs.get-package-info.outputs.msrv
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ needs.get-package-info.outputs.msrv }}
- name: Build
run: cargo build --verbose
- name: Run tests with all features
run: cargo test --all-features --verbose
if: matrix.rust == 'nightly'
- name: Run tests without features
run: cargo test --no-default-features --verbose
- name: Package
run: cargo package --offline
- name: Test package
working-directory: target/package/${{ needs.get-package-info.outputs.name }}-${{ needs.get-package-info.outputs.version }}/
run: cargo test --offline
- name: Test package without features
working-directory: target/package/${{ needs.get-package-info.outputs.name }}-${{ needs.get-package-info.outputs.version }}/
run: cargo test --no-default-features --offline
- name: Run benchmarks
run: cargo bench --features bench --verbose
if: matrix.rust == 'nightly'
- name: Build docs
run: cargo doc --all-features --verbose
if: matrix.rust == 'nightly'
tables:
name: Verify tables
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Regenerate tables
run: ./scripts/unicode.py && rustfmt tables.rs
- name: Verify regenerated files
run: diff tables.rs src/tables.rs