name: Test

on: [push, pull_request, workflow_call]

jobs:

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-latest, windows-latest, macos-latest]
        python-version: [ "3.9", "3.10", "3.11" ]

    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install and build
      run: |
        python -m pip install -r requirements-dev.txt
        python -m pip install .

    - name: Run tests
      run: python -m pytest