aiogram/.github/workflows/tests.yml
Alex Root Junior ec7da0f678
Migrate from Black to Ruff (#1750)
* Migrate from Black to Ruff and reformat code with enabling additional linter checks

* Add changelog for migration to Ruff as formatter and linter

* Add type ignores for specific attributes and replace tuple with set for chat type check

* Remove file from another changes
2026-01-04 21:34:08 +02:00

148 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Tests
on:
push:
branches:
- dev-3.x
paths:
- ".github/workflows/tests.yml"
- "aiogram/**"
- "tests/**"
- "codecov.yaml"
- "pyproject.toml"
pull_request:
branches:
- dev-3.x
paths:
- ".github/workflows/tests.yml"
- "aiogram/**"
- "tests/**"
- "pyproject.toml"
jobs:
tests:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
python-version:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
defaults:
# Windows sucks. Force use bash instead of PowerShell
run:
shell: bash
runs-on: ${{ matrix.os }}
env:
# Windows has some limitations:
# Redis and MongoDB is not supported on GitHub Windows runners;
IS_WINDOWS: ${{ startswith(matrix.os, 'windows') }}
# MongoDB has some limitations:
# MongoDB container action is only supported on Linux;
IS_UBUNTU: ${{ startswith(matrix.os, 'ubuntu') }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Install project dependencies
run: |
uv sync --all-extras --group dev --group test
- name: Lint code
run: |
uv run ruff check --output-format=github aiogram examples
uv run mypy aiogram
uv run ruff format --check --diff aiogram tests scripts examples
- name: Setup redis
if: ${{ env.IS_WINDOWS == 'false' }}
uses: shogo82148/actions-setup-redis@v1
with:
redis-version: "8"
- name: Setup mongodb
if: ${{ env.IS_UBUNTU == 'true' }}
uses: supercharge/mongodb-github-action@1.12.0
with:
mongodb-version: "8"
mongodb-username: mongo
mongodb-password: mongo
mongodb-port: 27017
- name: Run tests
run: |
flags="$flags --cov=aiogram --cov-config .coveragerc --cov-report=xml"
[[ "$IS_WINDOWS" == "false" ]] && flags="$flags --redis redis://localhost:6379/0"
[[ "$IS_UBUNTU" == "true" ]] && flags="$flags --mongo mongodb://mongo:mongo@localhost:27017"
uv run pytest $flags
- name: Upload coverage data
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
flags: unittests
name: py-${{ matrix.python-version }}-${{ matrix.os }}
fail_ci_if_error: true
pypy-tests:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
# - windows-latest
python-version:
- "pypy3.10"
- "pypy3.11"
defaults:
# Windows sucks. Force use bash instead of PowerShell
run:
shell: bash
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Install project dependencies
run: |
uv sync --all-extras --group dev --group test
- name: Run tests
run: |
flags=""
uv run pytest $flags