name: Build and test
on:
push:
pull_request:
jobs:
full_ci:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
toolchain: [ nightly, stable, 1.87.0 ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup rust version
run: rustup default ${{ matrix.toolchain }}
- name: Test with rust nightly
if: matrix.toolchain == 'nightly'
run: |
cargo check
cargo check --features "nightly"
cargo check --examples
cargo check --examples --features "nightly"
cargo test --features "nightly" --no-fail-fast -- --nocapture
cargo test --features "nightly" --no-fail-fast -- --nocapture
cargo doc
- name: Test with rust stable
if: matrix.toolchain == 'stable'
run: |
cargo fmt -- --check
cargo check
cargo check --examples
cargo clippy
cargo clippy --features "fast_resize_unstable"
cargo test --no-fail-fast -- --nocapture
cargo test --release --no-fail-fast -- --nocapture
cargo test --features fast_resize_unstable --no-fail-fast -- --nocapture
cargo test --features fast_resize_unstable --release --no-fail-fast -- --nocapture
cargo doc
- name: Test with rust 1.87.0
if: matrix.toolchain == '1.87.0'
run: |
# cargo update -p image --precise 0.25.4 # Image-rs often require newer rust version
cargo check
cargo check --examples
cargo test --no-fail-fast -- --nocapture
cargo test --release --no-fail-fast -- --nocapture
cargo test --features fast_resize_unstable --no-fail-fast -- --nocapture
cargo test --features fast_resize_unstable --release --no-fail-fast -- --nocapture
cargo doc
- name: Test i686-unknown-linux-gnu target
if: matrix.os == 'ubuntu-latest' && matrix.toolchain == 'stable'
run: |
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y gcc-multilib g++-multilib libc6-dev-i386 libc6-dev:i386
rustup target add i686-unknown-linux-gnu
cargo test --no-fail-fast --target i686-unknown-linux-gnu -- --nocapture
cargo test --features fast_resize_unstable --no-fail-fast --target i686-unknown-linux-gnu -- --nocapture
cargo test --features fast_resize_unstable --no-fail-fast --target i686-unknown-linux-gnu
cargo test --features fast_resize_unstable --no-fail-fast
cargo test --no-fail-fast --target i686-unknown-linux-gnu
cargo test --no-fail-fast