name: build

on: [push, pull_request]

jobs:
  build:
    name: build (${{ matrix.codebase }}, Django ${{ matrix.django-version }}, Python ${{ matrix.python-version }})
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        codebase: ['Supported', 'Develop']
        django-version: ['3.2', 'dev']
        python-version: ['3.8', '3.9']
        exclude:
          - codebase: 'Supported'
            django-version: 'dev'
          - codebase: 'Develop'
            python-version: '3.8'

    services:
      mysql:
        image: mysql:latest
        env:
          MYSQL_DATABASE: mysql
          MYSQL_ROOT_PASSWORD: mysql
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
    - name: Install pycups and words dependency
      run: |
        sudo apt-get install libcups2-dev wamerican

    - uses: actions/checkout@v2

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

    - name: Get pip cache dir
      id: pip-cache
      run: |
        echo "::set-output name=dir::$(pip cache dir)"

    - name: Cache
      uses: actions/cache@v2
      with:
        path: ${{ steps.pip-cache.outputs.dir }}
        key:
          ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/tox.ini') }}
        restore-keys: |
          ${{ matrix.python-version }}-v1-

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install -r https://raw.githubusercontent.com/clinicedc/edc/develop/requirements.tests/tox.txt

    - name: Tox tests
      run: |
        tox -v
      env:
        DJANGO: ${{ matrix.django-version }}
        EDC_CODEBASE: ${{ matrix.codebase }}

    - name: Upload coverage
      uses: codecov/codecov-action@v1
      with:
        name: Python ${{ matrix.python-version }}
