name: Sith CI

on:
  push:
    branches: [master, taiste]
  pull_request:
    branches: [master, taiste]
  workflow_dispatch:

env:
  SECRET_KEY: notTheRealOne
  DATABASE_URL: sqlite:///db.sqlite3
  CACHE_URL: redis://127.0.0.1:6379/0
  TASK_BROKER_URL: redis://127.0.0.1:6379/1

jobs:
  pre-commit:
    name: Launch pre-commits checks (ruff)
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version-file: ".python-version"
    - uses: pre-commit/action@v3.0.1
      with:
        extra_args: --all-files

  tests:
    name: Run tests and generate coverage report
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false  # don't interrupt the other test processes
      matrix:
        pytest-mark: [not slow]
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - uses: ./.github/actions/setup_project
        with:
          full: true
        env:
          # To avoid race conditions on environment cache
          CACHE_SUFFIX: ${{ matrix.pytest-mark }}
      - name: Run tests
        run: uv run coverage run -m pytest -m "${{ matrix.pytest-mark }}"
      - name: Generate coverage report
        run: |
          uv run coverage report
          uv run coverage html
      - name: Archive code coverage results
        uses: actions/upload-artifact@v4
        with:
          name: coverage-report-${{ matrix.pytest-mark }}
          path: coverage_report
