clipper2c-sys 0.1.6

Exposing unsafe FFI for Clipper2 library for Rust.
Documentation
name: "Test Suite"
on:
  push:
  pull_request:

jobs:
  # Check formatting with rustfmt
  formatting:
    name: cargo fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      # Ensure rustfmt is installed and setup problem matcher
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          components: rustfmt
      - name: Rustfmt Check
        uses: actions-rust-lang/rustfmt@v1

  test_all_ubuntu:
    name: cargo test all features (ubuntu)
    needs: formatting
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test --all-features

  valgrind_ubuntu:
    name: valgrind memcheck (ubuntu)
    needs:
      - test_all_ubuntu
      - test_ubuntu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - name: Install valgrind
        run: sudo apt-get update && sudo apt-get install -y valgrind
      - name: Build tests
        run: cargo test --no-run --message-format=json 2>/dev/null | jq -r 'select(.executable != null) | .executable' | head -1 > /tmp/test_binary
      - name: Run valgrind
        run: valgrind --leak-check=full --error-exitcode=1 --suppressions=rust_test.supp $(cat /tmp/test_binary) --test-threads=1

  test_ubuntu:
    name: cargo test (ubuntu)
    needs: formatting
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test

  test_all_macos14_arm64:
    name: cargo test all features (macos 14 arm64)
    needs:
      - test_all_ubuntu
      - test_ubuntu
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test --all-features

  test_all_windows:
    name: cargo test all features (windows)
    needs:
      - test_all_ubuntu
      - test_ubuntu
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test --all-features

  test_macos14_arm64:
    name: cargo test (macos 14 arm64)
    needs:
      - test_all_ubuntu
      - test_ubuntu
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test

  test_windows:
    name: cargo test (windows)
    needs:
      - test_all_ubuntu
      - test_ubuntu
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test