aiogram/.github/workflows/tests.yml
Alex Root Junior ce4ddb77f4
Migrate to UV (#1748)
* Switch to using `uv` for dependency management and update related project workflows and scripts

* Expand contributing documentation with instructions for using `uv`, including dependency management, testing, linting, and docs workflows.

* Add changelog entry for migration to `uv` for dependency management and workflows
2026-01-02 01:27:37 +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 black --check --diff aiogram tests
- 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