saal 0.1.1

Wrappers for the Standardized Astrodynamics Algorithms Library (SAAL)
name: Test

on:
  push:
    branches: ['dev']
  pull_request:
    branches: ['main']

jobs:
  test:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.runner }}
    defaults:
      run:
        shell: bash
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: linux-x86_64
            runner: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            mode: native
          - name: linux-aarch64
            runner: ubuntu-24.04-arm
            target: aarch64-unknown-linux-gnu
            mode: native
          - name: macos-x86_64
            runner: macos-15-intel
            target: x86_64-apple-darwin
            mode: native
          - name: macos-aarch64
            runner: macos-latest
            target: aarch64-apple-darwin
            mode: native
          - name: windows-x86_64
            runner: windows-latest
            target: x86_64-pc-windows-msvc
            mode: native

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install Python deps
        run: |
          python -m venv .venv
          PYTHON_BIN=".venv/bin/python"
          if [ -f ".venv/Scripts/python.exe" ]; then
            PYTHON_BIN=".venv/Scripts/python.exe"
          fi
          "$PYTHON_BIN" -m pip install --upgrade pip maturin pytest

      - name: Test Rust
        if: matrix.mode == 'native'
        run: cargo test --target ${{ matrix.target }} --lib --tests --bins

      - name: Test Python
        if: matrix.mode == 'native'
        run: |
          PYTHON_BIN=".venv/bin/python"
          if [ -f ".venv/Scripts/python.exe" ]; then
            PYTHON_BIN=".venv/Scripts/python.exe"
          fi
          "$PYTHON_BIN" -m maturin develop --release --target ${{ matrix.target }}
          "$PYTHON_BIN" -m pytest