name: Python package

on: [pull_request]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.8", "3.9", "3.10"]
        django-version: ["32","4"]
    steps:
    - uses: actions/checkout@v3

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

    - uses: actions/cache@v2
      with:
        path: ~/.cache/pip
        key: ${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-testing.txt')}}-${{ hashFiles('tox.ini') }}-${{ matrix.python-version }}-${{ matrix.django-version }}

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt -r requirements-testing.txt -c constraints-Django${{ matrix.django-version }}.txt

    - name: Format style check with 'autopep8'
      run: |
        pip install autopep8
        autopep8 --exit-code --global-config .flake8 helpdesk

    - name: Lint with 'flake8'
      run: |
        pip install flake8
        # stop the build if there are Python syntax errors or undefined names
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 helpdesk --count --show-source --statistics --exit-zero --max-complexity=20

    - name: Sort style check with 'isort'
      run: |
        isort --line-length=120 --src helpdesk . --check

    - name: Test with pytest
      run: |
        pip install pytest
        cd ${GITHUB_WORKSPACE} && python quicktest.py
      env:
        DJANGO_SETTINGS_MODULE: helpdesk.settings

