name: unittests

on:
  push:
    branches:
      - "master"
  pull_request:
    branches:
      - "master"

jobs:
  black:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox black
        run: tox -e check-black
  check-manifest:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox check-manifest
        run: tox -e check-check-manifest
  isort:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox isort
        run: tox -e check-isort
  pydocstyle:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox pydocstyle
        run: tox -e check-pydocstyle
  pylint:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox pylint
        run: tox -e check-pylint
  test-39-plus:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.9", "3.10", "3.11", "pypy3.9", "pypy3.10"]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install tox and any other packages
        run: pip install tox
      - name: Run tox
        # Reference: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#running-tests-with-tox
        # Reference: https://tox.wiki/en/latest/development.html#running-tests
        run: tox -e ${{ matrix.python-version }}
