name: AFDKO Test Suite

on:
  push:
    paths-ignore: 
      - docs/*
      - CONTRIBUTING.md
      - LICENSE.md
      - NEWS.md
      - README.md
  pull_request:
    branches: [master, develop]
  schedule:
    - cron: '0 11 1 * *'
  workflow_dispatch:
    inputs:
      reason:
        description: 'Reason for running workflow'
        required: true

jobs:
  run_tests:
    if: contains(toJson(github.event.commits), '[skip ci]') == false && contains(toJson(github.event.commits), '[skip github]') == false

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: [3.6, 3.7, 3.8, 3.9]
        exclude:
          - os: macos-latest
            python-version: 3.6
          - os: macos-latest
            python-version: 3.7
          - os: macos-latest
            python-version: 3.8
          - os: windows-latest
            python-version: 3.6
          - os: windows-latest
            python-version: 3.7
          - os: windows-latest
            python-version: 3.8

    steps:

    - name: Log reason (manual run only)
      if: github.event_name == 'workflow_dispatch'
      run: |
        echo "Reason for triggering: ${{ github.event.inputs.reason }}"

    - uses: actions/checkout@v1
      with:
        submodules: true

    - name: Use MSBuild (Windows)
      uses: microsoft/setup-msbuild@v1.0.2
      if: matrix.os == 'windows-latest'

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

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt -r requirements-dev.txt .
        pip freeze --all
    
    - name: Lint with flake8 using .flake8 config file
      run: |
        flake8 . --count --show-source --statistics --config=.flake8

    - name: Test with pytest
      run: |
        pytest --cov
