Tox has [released 4.9.0](https://github.com/tox-dev/tox/releases/tag/4.9.0) which fixed a bug where non existing environments did NOT fail, so since tox 4.9.0 they now DO fail: https://github.com/tox-dev/tox/issues/2858

We are relying on the previous behavior (the bugged one) so until we can fix it, I'm limiting tox as it breaks every PR right now which is worse than the limitation itself (which is not recommended).

We need to fix this soon so we can remove this limitation @auvipy @thedrow 
Limit tox to < 4.9. Tox has [released 4.9.0](https://github.com/tox-dev/tox/releases/tag/4.9.0) which fixed a bug where non existing environments did NOT fail, so since tox 4.9.0 they now DO fail: https://github.com/tox-dev/tox/issues/2858

We are relying on the previous behavior (the bugged one) so until we can fix it, I'm limiting tox as it breaks every PR right now which is worse than the limitation itself (which is not recommended).

We need to fix this soon so we can remove this limitation @auvipy @thedrow 
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Celery

on:
  push:
    branches: [ 'main']
    paths:
        - '**.py'
        - '**.txt'
        - '.github/workflows/python-package.yml'
        - '**.toml'
  pull_request:
    branches: [ 'main']
    paths:
        - '**.py'
        - '**.txt'
        - '**.toml'
        - '.github/workflows/python-package.yml'

permissions:
  contents: read # to fetch code (actions/checkout)

jobs:
  Unit:

    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.8', '3.9', '3.10', '3.11', 'pypy-3.9', 'pypy-3.10']
        os: ["ubuntu-latest", "windows-latest"]
        exclude:
            - python-version: 'pypy-3.9'
              os: "windows-latest"
            - python-version: 'pypy-3.10'
              os: "windows-latest"
            
    steps:
    - name: Install apt packages
      if: startsWith(matrix.os, 'ubuntu-')
      run: |
        sudo apt-get update && sudo apt-get install -f libcurl4-openssl-dev libssl-dev libgnutls28-dev httping expect libmemcached-dev
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}
        cache: 'pip'
        cache-dependency-path: '**/setup.py'

    - name: Install tox
      run: python -m pip install --upgrade pip tox tox-gh-actions
    - name: >
        Run tox for
        "${{ matrix.python-version }}-unit"
      timeout-minutes: 30
      run: |
        tox --verbose --verbose

    - uses: codecov/codecov-action@v3
      with:
        flags: unittests # optional
        fail_ci_if_error: true # optional (default = false)
        verbose: true # optional (default = false)

  Integration:
      needs:
      - Unit
      if: needs.Unit.result == 'success'
      timeout-minutes: 240

      runs-on: ubuntu-latest
      strategy:
          fail-fast: false
          matrix:
              python-version: ['3.8', '3.9', '3.10', '3.11']
              toxenv: ['redis', 'rabbitmq', 'rabbitmq_redis']

      services:
          redis:
              image: redis
              ports:
                  - 6379:6379
              env:
                  REDIS_HOST: localhost
                  REDIS_PORT: 6379
          rabbitmq:
              image: rabbitmq
              ports:
                  - 5672:5672
              env:
                  RABBITMQ_DEFAULT_USER: guest
                  RABBITMQ_DEFAULT_PASS: guest

      steps:
          -   name: Install apt packages
              run: |
                  sudo apt-get update && sudo apt-get install -f libcurl4-openssl-dev libssl-dev libgnutls28-dev httping expect libmemcached-dev

          -   uses: actions/checkout@v3
          -   name: Set up Python ${{ matrix.python-version }}
              uses: actions/setup-python@v4
              with:
                  python-version: ${{ matrix.python-version }}
                  cache: 'pip'
                  cache-dependency-path: '**/setup.py'
          -   name: Install tox
              run: python -m pip install --upgrade pip tox tox-gh-actions
          -   name: >
                  Run tox for
                  "${{ matrix.python-version }}-integration-${{ matrix.toxenv }}"
              timeout-minutes: 60
              run: >
                  tox --verbose --verbose -e
                  "${{ matrix.python-version }}-integration-${{ matrix.toxenv }}" -vv

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Celery

on:
  push:
    branches: [ 'main']
    paths:
        - '**.py'
        - '**.txt'
        - '.github/workflows/python-package.yml'
        - '**.toml'
  pull_request:
    branches: [ 'main']
    paths:
        - '**.py'
        - '**.txt'
        - '**.toml'
        - '.github/workflows/python-package.yml'

permissions:
  contents: read # to fetch code (actions/checkout)

jobs:
  Unit:

    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.8', '3.9', '3.10', '3.11', 'pypy-3.9', 'pypy-3.10']
        os: ["ubuntu-latest", "windows-latest"]
        exclude:
            - python-version: 'pypy-3.9'
              os: "windows-latest"
            - python-version: 'pypy-3.10'
              os: "windows-latest"
            
    steps:
    - name: Install apt packages
      if: startsWith(matrix.os, 'ubuntu-')
      run: |
        sudo apt-get update && sudo apt-get install -f libcurl4-openssl-dev libssl-dev libgnutls28-dev httping expect libmemcached-dev
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}
        cache: 'pip'
        cache-dependency-path: '**/setup.py'

    - name: Install tox
      run: python -m pip install --upgrade pip 'tox<4.9' tox-gh-actions
    - name: >
        Run tox for
        "${{ matrix.python-version }}-unit"
      timeout-minutes: 30
      run: |
        tox --verbose --verbose

    - uses: codecov/codecov-action@v3
      with:
        flags: unittests # optional
        fail_ci_if_error: true # optional (default = false)
        verbose: true # optional (default = false)

  Integration:
      needs:
      - Unit
      if: needs.Unit.result == 'success'
      timeout-minutes: 240

      runs-on: ubuntu-latest
      strategy:
          fail-fast: false
          matrix:
              python-version: ['3.8', '3.9', '3.10', '3.11']
              toxenv: ['redis', 'rabbitmq', 'rabbitmq_redis']

      services:
          redis:
              image: redis
              ports:
                  - 6379:6379
              env:
                  REDIS_HOST: localhost
                  REDIS_PORT: 6379
          rabbitmq:
              image: rabbitmq
              ports:
                  - 5672:5672
              env:
                  RABBITMQ_DEFAULT_USER: guest
                  RABBITMQ_DEFAULT_PASS: guest

      steps:
          -   name: Install apt packages
              run: |
                  sudo apt-get update && sudo apt-get install -f libcurl4-openssl-dev libssl-dev libgnutls28-dev httping expect libmemcached-dev

          -   uses: actions/checkout@v3
          -   name: Set up Python ${{ matrix.python-version }}
              uses: actions/setup-python@v4
              with:
                  python-version: ${{ matrix.python-version }}
                  cache: 'pip'
                  cache-dependency-path: '**/setup.py'
          -   name: Install tox
              run: python -m pip install --upgrade pip 'tox<4.9' tox-gh-actions
          -   name: >
                  Run tox for
                  "${{ matrix.python-version }}-integration-${{ matrix.toxenv }}"
              timeout-minutes: 60
              run: >
                  tox --verbose --verbose -e
                  "${{ matrix.python-version }}-integration-${{ matrix.toxenv }}" -vv
