name: e2e-cache

on:
  pull_request:
    paths-ignore:
      - '**.md'
  push:
    branches:
      - main
      - releases/*
    paths-ignore:
      - '**.md'

permissions:
  contents: read
jobs:
  python-pip-dependencies-caching:
    name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.9', 'pypy-3.7-v7.x']
    steps:
      - uses: actions/checkout@v3
      - name: Setup Python
        uses: ./
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'
      - name: Install dependencies
        run: pip install numpy pandas requests

  python-pipenv-dependencies-caching:
    name: Test pipenv (Python ${{ matrix.python-version}}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.9', 'pypy-3.7-v7.x']
    steps:
      - uses: actions/checkout@v3
      - name: Setup Python
        uses: ./
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pipenv'
      - name: Install pipenv
        run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
      - name: Install dependencies
        run: |
          mv ./__tests__/data/Pipfile.lock .
          mv ./__tests__/data/Pipfile .
          pipenv install --keep-outdated

  python-poetry-dependencies-caching:
    name: Test poetry (Python ${{ matrix.python-version}}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.9', 'pypy-3.8']
    steps:
      - uses: actions/checkout@v3
      - name: Install poetry
        run: pipx install poetry
      - name: Setup Python
        uses: ./
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'poetry'
      - name: Init pyproject.toml
        run: poetry init -n
      - name: Install dependencies
        run: poetry add flake8

  python-pip-dependencies-caching-path:
    name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.9', 'pypy-3.7-v7.x']
    steps:
      - uses: actions/checkout@v3
      - name: Setup Python
        uses: ./
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'
          cache-dependency-path: __tests__/data/requirements.txt
      - name: Install dependencies
        run: pip install numpy pandas requests

  python-pipenv-dependencies-caching-path:
    name: Test pipenv (Python ${{ matrix.python-version}}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.9', 'pypy-3.7-v7.x']
    steps:
      - uses: actions/checkout@v3
      - name: Setup Python
        uses: ./
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pipenv'
          cache-dependency-path: '**/pipenv-requirements.txt'
      - name: Install pipenv
        run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
      - name: Install dependencies
        run: |
          mv ./__tests__/data/Pipfile.lock .
          mv ./__tests__/data/Pipfile .
          pipenv install --keep-outdated