name: CI
on:
push:
pull_request:
branches: [main]
jobs:
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest - ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Install Rust toolchain (stable)
uses: dtolnay/rust-toolchain@stable
- name: Install uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: false
- name: Cache cargo registry and build artifacts
uses: actions/cache@v5.0.5
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
target
key: ${{ runner.os }}-${{ runner.arch }}-cargo-${{ hashFiles('Cargo.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-cargo-
- name: Formatting check
run: cargo fmt --check
- name: Build (debug)
run: cargo build --locked
- name: Unit tests (in-binary)
run: cargo test --locked --bins
- name: Integration tests (smoke)
run: cargo test --locked --test smoke
- name: Comparison test (Python vs Rust CSV)
run: cargo test --locked --test compare -- --nocapture
continue-on-error: true
- name: Release build (zero-warning check)
run: cargo build --locked --release
env:
RUSTFLAGS: "-D warnings"