stages:
  - lint
  - test

variables:
  POSTGRES_USER: '{{ cookiecutter.project_slug }}'
  POSTGRES_PASSWORD: ''
  POSTGRES_DB: 'test_{{ cookiecutter.project_slug }}'
  POSTGRES_HOST_AUTH_METHOD: trust
  {% if cookiecutter.use_celery == 'y' -%}
  CELERY_BROKER_URL: 'redis://redis:6379/0'
  {%- endif %}

flake8:
  stage: lint
  image: python:3.9-alpine
  before_script:
    - pip install -q flake8
  script:
    - flake8

pytest:
  stage: test
  {% if cookiecutter.use_docker == 'y' -%}
  image: docker/compose:1.29.2
  tags:
    - docker
  services:
    - docker:dind
  before_script:
    - docker-compose -f local.yml build
    # Ensure celerybeat does not crash due to non-existent tables
    - docker-compose -f local.yml run --rm django python manage.py migrate
    - docker-compose -f local.yml up -d
  script:
    - docker-compose -f local.yml run django pytest
  {%- else -%}
  image: python:3.9
  tags:
    - python
  services:
    - postgres:{{ cookiecutter.postgresql_version }}
  variables:
    DATABASE_URL: pgsql://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres/$POSTGRES_DB

  before_script:
    - pip install -r requirements/local.txt

  script:
    - pytest
  {%- endif %}

