# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Continuous Integration

on:
  push:
    branches:
      - '**'        # matches every branch
  pull_request:
    branches:
      - '**'        # matches every branch


permissions:
  contents: read  # to fetch code
  actions: write  # to cancel previous workflows

# This is what will cancel the workflow
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true


jobs:
  test_linux:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: [ "3.9", "3.10", "3.11", "3.12"]

    steps:
      - name: Cancel Previous Runs
        uses: styfle/cancel-workflow-action@0.12.1
        with:
          access_token: ${{ github.token }}
      - uses: actions/checkout@v4
      - name: Print concurrency group
        run: echo '${{ github.workflow }}-${{ github.ref }}'
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip cache purge
          python -m pip install --upgrade pip setuptools  --no-cache-dir
          python -m pip install -r requirements-dev.txt  --no-cache-dir
          rm pyproject.toml
          python setup.py install
      - name: Test with pytest
        run: |
          pytest tests/


#  test_macos:
#    runs-on: macos-latest
#    strategy:
#      fail-fast: false
#      matrix:
#        python-version: [ "3.9", "3.10", "3.11", "3.12"]
#
#    steps:
#      - name: Cancel Previous Runs
#        uses: styfle/cancel-workflow-action@0.12.1
#        with:
#          access_token: ${{ github.token }}
#      - uses: actions/checkout@v4
#      - name: Print concurrency group
#        run: echo '${{ github.workflow }}-${{ github.ref }}'
#      - name: Set up Python ${{ matrix.python-version }}
#        uses: actions/setup-python@v5
#        with:
#          python-version: ${{ matrix.python-version }}
#      - name: Install dependencies
#        run: |
#          python -m pip cache purge
#          python -m pip install --upgrade pip setuptools --no-cache-dir
#          python -m pip install -r requirements-dev.txt  --no-cache-dir
#          pip install cibuildwheel
#          sh copy_pyproject_mac_arm64.sh
#          cibuildwheel --platform macos
#          pip install wheelhouse/*
#      - name: Test with pytest
#        run: |
#          pytest tests/


  test_windows:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: [ "3.9", "3.10", "3.11", "3.12"]

    steps:
      - name: Cancel Previous Runs
        uses: styfle/cancel-workflow-action@0.12.1
        with:
          access_token: ${{ github.token }}
      - uses: actions/checkout@v4
      - name: Print concurrency group
        run: echo '${{ github.workflow }}-${{ github.ref }}'
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip cache purge
          python -m pip install --upgrade pip setuptools --no-cache-dir
          python -m pip install -r requirements-dev.txt  --no-cache-dir
          rm pyproject.toml
          python setup.py install
      - name: Test with pytest
        run: |
          pytest tests/ -p no:faulthandler