name: CI
on:
push: {}
pull_request: {}
schedule:
- cron: '0 16 * * *'
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
test:
runs-on: ${{ matrix.rust_os.os }}
strategy:
fail-fast: false
matrix:
rust_os:
- { rust: 1.45.0, os: ubuntu-20.04 }
- { rust: stable, os: ubuntu-latest }
- { rust: beta, os: ubuntu-latest }
- { rust: nightly, os: ubuntu-latest }
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust_os.rust }}
override: true
components: clippy, rustfmt
target: wasm32-unknown-unknown
- name: Use Rust 1.45 lockfile
if: ${{ matrix.rust_os.rust == '1.45.0' }}
run: cp Cargo-1.45.lock Cargo.lock
- name: Run tests
run: cargo test --tests --examples
- name: Doc tests
run: cargo test --doc
- name: Test with all features enabled
run: cargo test --all-features
- name: Test with curl (w/o reqwest)
run: cargo test --tests --features curl --no-default-features
- name: Check fmt
if: ${{ matrix.rust_os.rust == '1.45.0' }}
run: cargo fmt --all -- --check
- name: Clippy
if: ${{ matrix.rust_os.rust == '1.45.0' }}
run: cargo clippy --all --all-features -- --deny warnings
- name: Audit
if: ${{ matrix.rust_os.rust == 'stable' }}
run: |
cargo install --force cargo-audit
# The chrono thread safety issue doesn't affect this crate since the crate does not rely
# on the system's local time zone, only UTC. See:
# https://github.com/chronotope/chrono/issues/499#issuecomment-946388161
cargo audit --ignore RUSTSEC-2020-0159
- name: Check WASM build
run: cargo check --target wasm32-unknown-unknown