Skip to content

docs: Add comment

docs: Add comment #209

name: Build & Test
on:
push:
branches: [main]
paths:
- "**.rs"
- "**.toml"
- ".github/workflows/**"
pull_request:
branches: [main]
paths:
- "**.rs"
- "**.toml"
- ".github/workflows/**"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack
- name: Check
run: |
cargo hack check --workspace
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup | Install toolchain
run: |
rustup toolchain install stable --profile minimal
rustup toolchain install nightly --profile minimal
- name: Setup | Install cargo-fuzz
run: |
cargo install cargo-fuzz
- name: Setup | Cache dependencies
uses: Swatinem/[email protected]
id: cache
with:
cache-all-crates: true
- name: Test | Everything w/o fuzzing (macOS, Ubuntu)
if: matrix.os != 'windows-latest'
run: |
for build_mode in "" "--release";
do
for feature_mode in "" "--all-features";
do
echo "# Testing" ${build_mode} ${feature_mode}
cargo test --workspace ${build_mode} ${feature_mode} --doc
cargo test --workspace ${build_mode} ${feature_mode} --all-targets # TODO: exclude fuzz-targets
done
done
- name: Test | Everything w/o fuzzing (Windows)
if: matrix.os == 'windows-latest'
run: |
$build_modes = @('','--release')
$feature_modes = @('','--all-features')
foreach ($build_mode in $build_modes) {
foreach ($feature_mode in $feature_modes) {
echo "# Testing" ${build_mode} ${feature_mode}
cargo test --workspace ${build_mode} ${feature_mode} --doc
cargo test --workspace ${build_mode} ${feature_mode} --all-targets # TODO: exclude fuzz-targets
}
}
- name: Test | Limited fuzzing (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: echo "NOOP" # TODO
minimal-versions:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup | Install toolchain
run: |
# 1.66 is the Minimum Supported Rust Version (MSRV) for imap-flow.
rustup toolchain install 1.66 --profile minimal
rustup toolchain install nightly --profile minimal
- name: Setup | Cache dependencies
uses: Swatinem/[email protected]
id: cache
with:
cache-all-crates: true
- name: Check
run: |
cargo +nightly update -Z minimal-versions
cargo +1.66 check --workspace --all-targets --all-features
cargo +1.66 test --workspace --all-targets --all-features # TODO: exclude fuzz-targets
env:
RUSTFLAGS: -Dwarnings
audit:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Audit dependencies
uses: EmbarkStudios/cargo-deny-action@1e59595bed8fc55c969333d08d7817b36888f0c5
clippy:
runs-on: ubuntu-latest
steps:
- name: Install toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Checkout code
uses: actions/checkout@v4
- name: Check for common mistakes and missed improvements
run: cargo clippy --all-features
formatting:
runs-on: ubuntu-latest
steps:
- name: Install toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Checkout code
uses: actions/checkout@v4
- name: Check code formatting
run: cargo +nightly fmt --check