name: testing

on:
  push:
    branches:
      - main
    paths-ignore:
      - 'docs/'
      - CHANGELOG.md

  pull_request:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 1
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.11
          cache: pip
      - name: Run pre-commit
        run: |
          pip install pre-commit
          pre-commit run

  test:
    needs: lint
    strategy:
      max-parallel: 6
      matrix:
        python-version: ["3.9", "3.10", "3.11"]
        platform:
        - ubuntu-latest
        - macos-latest
        - windows-latest
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python }}${{ matrix.dev }}
      - name: Install test requirements
        run: |
          python -m pip install --upgrade pip
          pip install -e ".[testing]"
      - name: Run tests
        run: |
          pytest --cov=src/pyEQL --cov-report=xml
      - uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          file: ./coverage.xml

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.9
      - name: Install tox
        run: |
          python -m pip install tox
      - uses: r-lib/actions/setup-pandoc@v2
      - name: Build docs
        run: tox -e docs