name: Rust CI
permissions:
contents: read
checks: write
statuses: write
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Check formatting
run: cargo fmt -- --check --config imports_granularity=Module,group_imports=StdExternalCrate
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 - name: Lint with Clippy
run: cargo clippy --features protoc -- -D warnings
- name: Lint with Clippy (All features)
run: cargo clippy --all-features -- -D warnings
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4
- name: Run tests
run: cargo test --all-features --verbose
- name: Run basic_usage example
run: cargo run --example basic_usage --features protoc --verbose
- name: Run advanced_usage example
run: cargo run --example advanced_usage --features serde,protoc --verbose
- name: Run extensions example
run: cargo run --example extensions --features cli,protoc --verbose
- name: Test CLI with example plans
run: |
# Test validate command with example plans
cargo run --features cli,protoc -- validate -i example-plans/basic.substrait
cargo run --features cli,protoc -- validate -i example-plans/simple.substrait