name: Rust on: pull_request: paths: - 'wren-core/**' concurrency: group: ${{ github.workflow }}-${{ github.event.number }} cancel-in-progress: true defaults: run: working-directory: wren-core jobs: # Check crate compiles linux-build-lib: name: cargo check runs-on: ubuntu-latest container: image: amd64/rust steps: - uses: actions/checkout@v4 - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-builder with: rust-version: stable - name: Cache Cargo uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ ./wren-core/target/ # this key equals the ones on `linux-build-lib` for re-use key: cargo-cache-benchmark-${{ hashFiles('wren-core/Cargo.toml') }} - name: Check datafusion-common without default features run: cargo check --all-targets # Run tests linux-test: name: cargo test (amd64) needs: [ linux-build-lib ] runs-on: ubuntu-latest container: image: amd64/rust steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-builder with: rust-version: stable - name: Run tests (excluding doctests) run: cargo test --lib --tests --bins - name: Verify Working Directory Clean run: git diff --exit-code windows: name: cargo test (win64) runs-on: windows-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-windows-builder - name: Run tests (excluding doctests) shell: bash run: | cargo test --lib --tests --bins macos: name: cargo test (macos) runs-on: macos-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-macos-builder - name: Run tests (excluding doctests) shell: bash run: cargo test --lib --tests --bins macos-aarch64: name: cargo test (macos-aarch64) runs-on: macos-14 steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-macos-aarch64-builder - name: Run tests (excluding doctests) shell: bash run: cargo test --lib --tests --bins check-fmt: name: Check cargo fmt runs-on: ubuntu-latest container: image: amd64/rust steps: - uses: actions/checkout@v4 - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-builder with: rust-version: stable - name: Run run: cargo fmt --all -- --check clippy: name: clippy needs: [ linux-build-lib ] runs-on: ubuntu-latest container: image: amd64/rust steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-builder with: rust-version: stable - name: Install Clippy run: rustup component add clippy - name: Run clippy run: cargo clippy --all-targets --all-features -- -D warnings cargo-toml-formatting-checks: name: check Cargo.toml formatting needs: [ linux-build-lib ] runs-on: ubuntu-latest container: image: amd64/rust steps: - uses: actions/checkout@v4 with: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/rust/setup-builder with: rust-version: stable - name: Install taplo run: cargo +stable install taplo-cli --version ^0.9 --locked # if you encounter an error, try running 'taplo format' to fix the formatting automatically. - name: Check Cargo.toml formatting run: taplo format --check