name: lint and test

on: [push, pull_request]

jobs:
  test:

    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: [3.7, 3.8, 3.9, "3.10", "3.11"]
        requirements: ['']
        include:
          - requirements: "-r requirements-min.txt"
            python-version: 3.7
            os: ubuntu-latest

    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v2
    - 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 ${{ matrix.requirements }} .[test,optional]
    - name: Test with pytest
      run: |
        pytest --cov=pvanalytics --cov-config=.coveragerc --cov-report term-missing pvanalytics --runslow
    - name: Upload Coverage
      run: |
        pip install --upgrade coveralls
        coveralls
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        COVERALLS_FLAG_NAME: ${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.requirements }}
        COVERALLS_PARALLEL: true
        COVERALLS_SERVICE_NAME: github

  coveralls:

    name: Finish Coveralls
    needs: test

    runs-on: ubuntu-latest

    steps:
      - name: Set up Python 3.8
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Finish Coveralls Upload
        run: |
          pip install --upgrade pip
          pip install --upgrade coveralls
          coveralls --finish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  lint:

    strategy:
      matrix:
        python-version: [3.7]

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Lint with flake8
      run: |
        python -m pip install --upgrade pip
        pip install flake8
        flake8 . --count --statistics --show-source