mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add and improve step names Merge "Lint code" and "Check code-style" steps Don't install uvloop on macos when running on pypy Don't run tests with coverage on pypy Remove test timeout adjustments
131 lines
3.9 KiB
YAML
131 lines
3.9 KiB
YAML
name: Tests
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev-3.x
|
|
paths:
|
|
- ".github/workflows/tests.yml"
|
|
- "aiogram/**"
|
|
- "tests/**"
|
|
- ".coveragerc"
|
|
- ".flake8"
|
|
- "codecov.yaml"
|
|
- "mypy.ini"
|
|
- "poetry.lock"
|
|
- "pyproject.toml"
|
|
pull_request:
|
|
branches:
|
|
- dev-3.x
|
|
paths:
|
|
- ".github/workflows/tests.yml"
|
|
- "aiogram/**"
|
|
- "tests/**"
|
|
- ".coveragerc"
|
|
- ".flake8"
|
|
- "codecov.yaml"
|
|
- "mypy.ini"
|
|
- "poetry.lock"
|
|
- "pyproject.toml"
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
python-version:
|
|
- '3.8'
|
|
- '3.9'
|
|
- '3.10'
|
|
- 'pypy3.8'
|
|
- 'pypy3.9'
|
|
|
|
defaults:
|
|
# Windows sucks. Force use bash instead of PowerShell
|
|
run:
|
|
shell: bash
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@master
|
|
|
|
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install and configure Poetry
|
|
uses: snok/install-poetry@v1
|
|
if: "!startswith(matrix.python-version, 'pypy') || matrix.os != 'windows-latest'"
|
|
with:
|
|
version: 1.1.11
|
|
virtualenvs-create: true
|
|
virtualenvs-in-project: true
|
|
installer-parallel: true
|
|
|
|
- name: Install and configure Poetry (PyPy on Windows)
|
|
# Poetry installer raises an error on Windows PyPy, so it's a separate step
|
|
if: "startswith(matrix.python-version, 'pypy') && matrix.os == 'windows-latest'"
|
|
run: |
|
|
set -eu
|
|
pip install "poetry==1.1.11"
|
|
poetry config virtualenvs.create true
|
|
poetry config virtualenvs.in-project true
|
|
poetry config installer.parallel true
|
|
|
|
- name: Setup redis
|
|
# Redis can't be used on GitHub Windows Runners
|
|
if: ${{ matrix.os != 'windows-latest' }}
|
|
uses: shogo82148/actions-setup-redis@v1
|
|
with:
|
|
redis-version: 6
|
|
|
|
- name: Load cached venv
|
|
id: cached-poetry-dependencies
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: .venv
|
|
key: venv-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ secrets.CACHE_VERSION }}
|
|
|
|
- name: Install project dependencies
|
|
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
|
|
env:
|
|
# uvloop on macOS on PyPy doesn't compile
|
|
INSTALL_FAST: ${{ matrix.os == 'macos-latest' && startswith(matrix.python-version, 'pypy') }}
|
|
run: |
|
|
flags=""
|
|
[[ "$INSTALL_FAST" == "true" ]] && flags="$flags -E fast"
|
|
poetry install --no-interaction -E redis -E proxy -E i18n -E docs $flags
|
|
|
|
- name: Lint code
|
|
run: |
|
|
poetry run flake8 aiogram
|
|
poetry run mypy aiogram
|
|
poetry run black --check --diff aiogram tests
|
|
|
|
- name: Run tests
|
|
env:
|
|
USE_REDIS: ${{ matrix.os != 'windows-latest' }}
|
|
# Coverage don't work well on PyPy with tests that have timeout
|
|
USE_COVERAGE: ${{ !startswith(matrix.python-version, 'pypy') }}
|
|
run: |
|
|
flags=""
|
|
[[ "$USE_COVERAGE" == "true" ]] && flags="$flags --cov=aiogram --cov-config .coveragerc --cov-report=xml"
|
|
[[ "$USE_REDIS" == "true" ]] && flags="$flags --redis redis://localhost:6379/0"
|
|
poetry run pytest $flags
|
|
|
|
- name: Upload coverage data
|
|
if: "!startswith(matrix.python-version, 'pypy')"
|
|
uses: codecov/codecov-action@v1
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
file: coverage.xml
|
|
flags: unittests
|
|
name: py-${{ matrix.python-version }}-${{ matrix.os }}
|
|
fail_ci_if_error: true
|