name: Unit Tests Minimum Versions

on:
  push:
  pull_request:
    types: [opened, reopened]

jobs:
  minimum:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        python-version: [ '3.8', '3.9', '3.10']
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - if: matrix.os == 'windows-latest'  && matrix.python-version != 3.10
      name: Install dependencies - Windows
      run: |
          python -m pip install --upgrade pip
          python -m pip install 'torch==1.8.0' -f https://download.pytorch.org/whl/cpu/torch/
          python -m pip install 'torchvision==0.9.0' -f https://download.pytorch.org/whl/cpu/torchvision/
    - if: matrix.os == 'windows-latest' && matrix.python-version == 3.10
      name: Install dependencies - Windows
      run: |
          python -m pip install --upgrade pip
          python -m pip install 'torch==1.11.0' -f https://download.pytorch.org/whl/cpu/torch/
    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          python -m pip install invoke .[test]
    - name: Test with minimum versions
      run: invoke minimum
