name: Test CI

on: [push, pull_request]

env:
  POSTGRES_DB: scancodeio
  POSTGRES_USER: scancodeio
  POSTGRES_PASSWORD: scancodeio
  POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8

jobs:
  build:
    runs-on: ubuntu-22.04

    services:
      postgres:
        image: postgres:13
        env:
          POSTGRES_DB: ${{ env.POSTGRES_DB }}
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_INITDB_ARGS: ${{ env.POSTGRES_INITDB_ARGS }}
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

    strategy:
      max-parallel: 4
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11"]

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies
        run: make dev envfile

      - name: Validate code format
        run: make check

      - name: Check Django deployment settings
        run: make check-deploy

      - name: Build the documentation
        run: make docs

      - name: Run tests
        run: bin/python manage.py test --verbosity=2 --noinput
        env:
          SCANCODEIO_DB_NAME: ${{ env.POSTGRES_DB }}
          SCANCODEIO_DB_USER: ${{ env.POSTGRES_USER }}
          SCANCODEIO_DB_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
