name: Django CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  build:
    env:
      IMGUR_UPLOAD_CLIENT_ID: ${{ secrets.IMGUR_UPLOAD_CLIENT_ID }}
      IMGUR_UPLOAD_CLIENT_SECRET: ${{ secrets.IMGUR_UPLOAD_CLIENT_SECRET }}
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    runs-on: ubuntu-latest
    if: "!contains(github.event.head_commit.message, '[ci skip]')"
    strategy:
      matrix:
        test-group: ["RIGS.tests.test_unit RIGS.tests.test_models RIGS.tests.test_functional", "versioning.tests.test_versioning", "users.tests.test_users"]
        parallel: [true]
        include:
            - test-group: "assets.tests.test_assets"
              parallel: false
            - test-group: "RIGS.tests.test_interaction"
              parallel: false
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8
      - name: Setup Chromedriver
        if: \!${{ matrix.parallel }}
        run: |
          wget https://chromedriver.storage.googleapis.com/2.36/chromedriver_linux64.zip
          unzip chromedriver_linux64.zip
          export PATH=$PATH:$(pwd)
          chmod +x chromedriver
          export PATH=$PATH:/usr/lib/chromium-browser/
      - name: Install Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install pycodestyle coverage coveralls django_coverage_plugin
          pip install -r requirements.txt
          python manage.py collectstatic --noinput
      - name: Basic Checks
        run: |
          pycodestyle . --exclude=migrations,importer*
          python manage.py check
          python manage.py makemigrations --check --dry-run
      - name: Run Tests
        if: \!${{ matrix.parallel }}
        run: coverage run manage.py test ${{ matrix.test-group }} --verbosity=2
      - name: Run Tests (Parallel)
        if: ${{ matrix.parallel }}
        run: coverage run manage.py test ${{ matrix.test-group }} --parallel --verbosity=2
      - name: Upload Coverage
        run: coveralls --service=github
        env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            COVERALLS_FLAG_NAME: ${{ matrix.test-group }}
            COVERALLS_PARALLEL: true
  coveralls:
    name: Indicate completion to coveralls.io
    needs: build
    runs-on: ubuntu-latest
    container: python:3-slim
    steps:
    - name: Finished
      run: |
        pip3 install --upgrade coveralls
        coveralls --service=github --finish
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
