Skip to content

test

test #103

Workflow file for this run

name: test
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
jobs:
test:
name: Build & test
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
rust:
- stable
- beta
- nightly
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
runs-on: ${{ matrix.os }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust ${{ matrix.rust }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build & test
run: cargo test --all-features
test-minimal-versions:
name: Build with the minimal supported versions
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
# MSRV as set in Cargo.toml
toolchain: 1.48.0
default: true
profile: minimal
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.7"
architecture: x64
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Install the minimal versions of dependencies
env:
# `-Z minimal-versions` is unstable, so we set
# `RUSTC_BOOTSTRAP=1` to be able to use it on stable
RUSTC_BOOTSTRAP: "1"
run: cargo update -Z minimal-versions
- name: Build & test
run: cargo test --all-features
rustfmt:
name: Check formatting
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- run: cargo fmt --all -- --check
links:
name: Check documentation links
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Check links
run: cargo rustdoc --all-features -- -D warnings
clippy:
name: Clippy lints
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run clippy linter
run: cargo clippy --all --tests -- -D clippy::all -D warnings
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Download cargo-tarpaulin from the GitHub releases
run: |
mkdir -p "${HOME}/.local/bin"
curl -sL https://github.com/xd009642/tarpaulin/releases/download/0.24.0/cargo-tarpaulin-x86_64-unknown-linux-gnu.tar.gz | tar xvz -C "${HOME}/.local/bin"
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Run cargo-tarpaulin
run: cargo tarpaulin --all-features --run-types Doctests,Tests --out Xml
- name: Upload to codecov.io
uses: codecov/codecov-action@c16abc29c95fcf9174b58eb7e1abf4c866893bc8 # v4.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: cobertura.xml
retention-days: 30