name: Tests
on: [push, pull_request]

jobs:
  build:
    name: Build (${{ matrix.python-version }} | ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: ["ubuntu-latest"]
        python-version: ["3.7", "3.8"]
    steps:
      - uses: actions/checkout@v2
      - name: Cache conda
        uses: actions/cache@v1
        env:
          # Increase this value to reset cache if ci/environment.yml has not changed
          CACHE_NUMBER: 0
        with:
          path: ~/conda_pkgs_dir
          key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/environment-py${{ matrix.python-version }}.yml') }}
      - uses: conda-incubator/setup-miniconda@v2
        with:
          # mamba-version: "*" # activate this to build with mamba.
          # channels: conda-forge, defaults # These need to be specified to use mamba
          # channel-priority: true
          environment-file: ci/environment-py${{ matrix.python-version }}.yml

          activate-environment: test_env_xagg_new
          use-only-tar-bz2: true # IMPORTANT: This needs to be set for caching to work properly!
      - name: Set up conda environment
        shell: bash -l {0}
        run: |
          python -m pip install -e . --no-deps --force-reinstall
      - name: Run Tests
        shell: bash -l {0}
        run: |
          pytest --cov=./ --cov-report=xml
      - name: Upload code coverage to Codecov
        uses: codecov/codecov-action@v1
        with:
          file: ./coverage.xml
          flags: unittests
          env_vars: OS,PYTHON
          name: codecov-umbrella
          fail_ci_if_error: false