name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Generate Rust from slaspecs
run: cargo run -p rsleigh-generate
- name: Build all crates
run: cargo build --workspace
- name: Test — golden P-code + decompiler validation
run: cargo test --release -p test-harness
- name: Test — decompiler unit tests
run: cargo test --release -p rsleigh-decompile --lib
- name: Build CLI (release)
run: cargo build -p rsleigh-cli --release
clippy:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Generate Rust from slaspecs
run: cargo run -p rsleigh-generate
- name: Clippy — core crates
run: cargo clippy -p pcode-ir -p rsleigh-api -p rsleigh-decompile -p rsleigh-cli -- -D warnings
continue-on-error: true
check:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Check pcode-ir (no codegen needed)
run: cargo check -p pcode-ir