# This is a basic workflow to help you get started with Actions

name: Test PyGLM on various systems and Python versions

# Controls when the workflow will run
on: [push, pull_request, workflow_dispatch]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  test-build:
    # The type of runner that the job will run on
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      - uses: actions/checkout@v6
        with:
            submodules: recursive
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install pip, build and pytest
        run: |
          python -m pip install pip --upgrade
          pip install pytest
          pip install build
      - name: Build PyGLM
        run: python -m build
      - name: Install PyGLM
        run: python -c "import os, glob, subprocess; wheels = glob.glob('dist/*.whl'); subprocess.check_call(['pip', 'install', wheels[0]])"
      - name: Test with pytest
        run: pytest test/PyGLM_test.py -v
  
