name: test
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Fetch base branch
        run: git fetch origin ${{ github.base_ref }}
      - uses: actions/setup-python@v4
        with:
          python-version: "3.8"
          architecture: x64
      - name: Get pip cache dir
        id: pip-cache
        run: |
          echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
      - name: pip/pre-commit cache
        uses: actions/cache@v3
        with:
          path: |
            ${{ steps.pip-cache.outputs.dir }}
            ~/.cache/pre-commit
          key: ${{ runner.os }}-pip-pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pip-pre-commit
      - name: pre-commit
        run: |
          pip install -U pre-commit
          pre-commit install --install-hooks
          pre-commit run --all-files
  whisper-test:
    needs: pre-commit
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.8', '3.9', '3.10', '3.11']
        pytorch-version: [1.13.1, 2.0.0]
        exclude:
          - python-version: '3.11'
            pytorch-version: 1.13.1
    steps:
      - uses: conda-incubator/setup-miniconda@v2
      - run: conda install -n test ffmpeg python=${{ matrix.python-version }}
      - run: pip3 install torch==${{ matrix.pytorch-version }}+cpu --index-url https://download.pytorch.org/whl/cpu
      - uses: actions/checkout@v3
      - run: echo "$CONDA/envs/test/bin" >> $GITHUB_PATH
      - run: pip install .["dev"]
      - run: pytest --durations=0 -vv -k 'not test_transcribe or test_transcribe[tiny] or test_transcribe[tiny.en]' -m 'not requires_cuda'
