name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-rust:
name: Test (Rust SDK)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust tests (chunk-your-tools)
run: cargo test -p chunk-your-tools
- name: Rust fmt
run: cargo fmt --all -- --check
- name: Rust clippy (chunk-your-tools)
run: cargo clippy -p chunk-your-tools --all-targets --all-features -- -D warnings
- name: Rust FFI smoke test
run: cargo test -p chunk-your-tools --no-default-features --features ffi --test ffi_smoke
test-python-sdk:
name: Test (Python SDK)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@d31148d669074a8d0a63714ba94f3201e7020bc3
with:
python-version: "3.13"
enable-cache: true
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install Python SDK dependencies
working-directory: sdk/python
run: uv sync
- name: Verify chunk-your-tools native import
working-directory: sdk/python
run: uv run python -c "from chunk_your_tools._native import build_catalog_index; assert callable(build_catalog_index)"
- name: Install ast-grep
working-directory: sdk/python
run: uv pip install ast-grep-cli==0.41.0
- name: Ast-grep scan
working-directory: sdk/python
run: uv run ast-grep scan ..
- name: Pytest (sdk/python)
working-directory: sdk/python
run: uv run pytest
test-typescript-sdk:
name: Test (TypeScript SDK)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
cache: npm
cache-dependency-path: sdk/typescript/package-lock.json
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies
working-directory: sdk/typescript
run: npm ci
- name: Build TypeScript SDK
working-directory: sdk/typescript
run: npm run build
- name: Test TypeScript SDK
working-directory: sdk/typescript
run: npm test