Use thiserror crate to make error definition more ergonomic. #925
Workflow file for this run
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: Rust | |
on: [push, pull_request] | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check fmt | |
run: cargo fmt -- --check | |
msrv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@1.52.0 | |
- run: cargo check | |
minimal-versions: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install tools | |
run: cargo install cargo-hack cargo-minimal-versions | |
- name: Install nightly rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Check with minimal versions | |
run: cargo minimal-versions check | |
- name: Check with minimal versions (serialize) | |
run: cargo minimal-versions check --features serialize | |
- name: Check with minimal versions (encoding) | |
run: cargo minimal-versions check --features encoding | |
- name: Check with minimal versions (async-tokio) | |
run: cargo minimal-versions check --features async-tokio | |
test: | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, windows-latest] | |
runs-on: ${{ matrix.platform }} | |
# Set variable to enable coverage | |
env: | |
RUSTFLAGS: -C instrument-coverage | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install coverage reporter (llvm-tools-preview) | |
if: runner.os == 'Linux' | |
run: rustup component add llvm-tools-preview | |
- name: Install coverage reporter (grcov) | |
if: runner.os == 'Linux' | |
run: cargo install grcov | |
- name: Build | |
run: cargo build | |
- name: Build benchmarks | |
run: cargo bench --no-run | |
- name: Build benchmarks (compare) | |
working-directory: compare | |
run: cargo bench --no-run | |
- name: Run tests + benchmarks | |
run: cargo test --all-features --benches --tests | |
- name: Run tests (no features) | |
env: | |
LLVM_PROFILE_FILE: coverage/no-features-%p-%m.profraw | |
run: cargo test --no-default-features | |
- name: Run tests (serialize) | |
env: | |
LLVM_PROFILE_FILE: coverage/serialize-%p-%m.profraw | |
run: cargo test --features serialize | |
- name: Run tests (serialize+encoding) | |
env: | |
LLVM_PROFILE_FILE: coverage/serialize-encoding-%p-%m.profraw | |
run: cargo test --features serialize,encoding | |
- name: Run tests (serialize+escape-html) | |
env: | |
LLVM_PROFILE_FILE: coverage/serialize-escape-html-%p-%m.profraw | |
run: cargo test --features serialize,escape-html | |
- name: Run tests (all features) | |
env: | |
LLVM_PROFILE_FILE: coverage/all-features-%p-%m.profraw | |
run: cargo test --all-features | |
- name: Prepare coverage information for upload | |
if: runner.os == 'Linux' | |
run: | | |
grcov ./coverage \ | |
-s . \ | |
--binary-path ./target/debug/ \ | |
--branch \ | |
--ignore-not-existing \ | |
--ignore 'tests/*' \ | |
-o ./coverage.lcov | |
- name: Upload coverage to codecov.io | |
if: runner.os == 'Linux' | |
uses: codecov/codecov-action@v2 | |
with: | |
files: ./coverage.lcov | |
flags: unittests | |
verbose: true | |
continue-on-error: true | |