on:
  [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [ '3.9', '3.10', '3.11', '3.12' ]
    name: Run tests in Python ${{ matrix.python-version }}
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
          architecture: x64
      - name: Install Poetry
        uses: snok/install-poetry@v1.3.0
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
          installer-parallel: true
      - name: Install dependencies with Poetry
        run: poetry install --no-interaction --no-root
      - name: Check types with mypy
        run: |
          source .venv/bin/activate
          mypy .
      - name: Lint code with pylint and flake8
        run: |
          source .venv/bin/activate
          pylint gutenberg2kindle tests
          flake8 --extend-exclude ".venv"
      - name: Run tests with pytest
        run: |
          source .venv/bin/activate
          pytest --cov=gutenberg2kindle --cov-fail-under=80 -vvv