name: ci-pytest

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:

env:
  # Updates or changes to this, or the runner OS or arch will invalidate the cache
  python_version: "3.12" # Python version to use for testing - update when needed

jobs:
  test:
    runs-on: ubuntu-22.04
    # Default shell needs to be bash for conda
    # https://github.com/conda-incubator/setup-miniconda?tab=readme-ov-file#important
    defaults:
      run:
        shell: bash -el {0}
    steps:
      - name: Setup Miniconda
        uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1, devs recommend using hash
        with:
          miniforge-version: latest
          python-version: ${{ env.python_version }}
          auto-update-conda: true
          activate-environment: "test-env"

      - name: Checkout code
        uses: actions/checkout@v4 # Checkout PR code to 'antspy-pr'
        with:
          path: antspy-pr

      - name: Install dependencies and ANTsPy from PR
        run: |
          conda info
          conda create -n antspy-env python=${{ env.python_version }} -y
          conda activate antspy-env
          conda install coverage
          conda info
          pip install ./antspy-pr
          conda list

      - name: Run tests
        run: |
          conda activate antspy-env
          bash antspy-pr/tests/run_tests.sh -c

      - name: Coveralls
        uses: coverallsapp/github-action@v2
        with:
          files: antspy-pr/tests/coverage.xml
