name: tests


on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]


jobs:
  pylama:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup python3.10
        uses: actions/setup-python@v2
        with:
          python-version: "3.10"
      - name: Cache virtualenv
        id: venv-cache
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
      - run: python -m pip install poetry
      - run: poetry install
      - run: poetry run pylama
        env:
          FORCE_COLOR: 1
  mypy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup python3.10
        uses: actions/setup-python@v2
        with:
          python-version: "3.10"
      - name: Cache virtualenv
        id: venv-cache
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
      - run: python -m pip install poetry
      - run: poetry install
      - run: poetry run mypy
        env:
          FORCE_COLOR: 1
  docs:
    runs-on: ubuntu-latest
    services:
      rabbitmq:
        image: docker://mosquito/aiormq-rabbitmq
        ports:
          - 5672:5672
          - 5671:5671
    steps:
      - uses: actions/checkout@v2
      - name: Setup python3.10
        uses: actions/setup-python@v2
        with:
          python-version: "3.10"
      - name: Cache virtualenv
        id: venv-cache
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}
      - run: python -m pip install poetry
      - run: poetry install
      - run: poetry run pytest -svv README.rst
        env:
          FORCE_COLOR: 1

  tests:
    runs-on: ubuntu-latest

    services:
      rabbitmq:
        image: docker://mosquito/aiormq-rabbitmq
        ports:
          - 5672:5672
          - 5671:5671

    strategy:
      fail-fast: false

      matrix:
        python:
          - '3.8'
          - '3.9'
          - '3.10'
          - '3.11'
          - '3.12'
    steps:
      - uses: actions/checkout@v2
      - name: Setup python${{ matrix.python }}
        uses: actions/setup-python@v2
        with:
          python-version: "${{ matrix.python }}"
      - name: Cache virtualenv
        id: venv-cache
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ matrix.python }}
      - run: python -m pip install poetry
      - run: poetry install --with=uvloop
      - name: pytest
        run: >-
          poetry run pytest \
            -vv \
            --cov=aiormq \
            --cov-report=term-missing \
            --doctest-modules \
            --aiomisc-test-timeout=120 \
            tests
        env:
          FORCE_COLOR: 1
      - run: poetry run coveralls
        env:
          COVERALLS_PARALLEL: 'true'
          COVERALLS_SERVICE_NAME: github
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  finish:
    needs:
       - tests
    runs-on: ubuntu-latest
    steps:
      - name: Coveralls Finished
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true
