name: CI

on: [push, pull_request]

jobs:
  test-linux:
    strategy:
      matrix:
        python-version: [3.9, '3.10', '3.11', '3.12']

    runs-on: ubuntu-latest

    env:
      TEST_OPTS: "-rfsxEX -s --cov=flexcache --cov-config=.coveragerc"

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 100

      - name: Get tags
        run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*

      - 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: Setup caching
        uses: actions/cache@v2
        with:
          path: ${{ steps.pip-cache.outputs.dir }}
          key: pip-${{ matrix.python-version }}
          restore-keys: |
            pip-${{ matrix.python-version }}

      - name: Install dependencies
        run: |
          pip install .[test]

      - name: Run Tests
        run: |
          pytest $TEST_OPTS

      - name: Coverage report
        run: coverage report -m

      - name: Coveralls Parallel
        env:
          COVERALLS_FLAG_NAME: ${{ matrix.test-number }}
          COVERALLS_PARALLEL: true
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          COVERALLS_SERVICE_NAME: github
        run: |
          pip install coveralls
          coveralls

  coveralls:
    needs: test-linux
    runs-on: ubuntu-latest
    steps:
    - uses: actions/setup-python@v2
      with:
        python-version: 3.x
    - name: Coveralls Finished
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        COVERALLS_SERVICE_NAME: github
      run: |
        pip install coveralls
        coveralls --finish
