add lint stage to github

This commit is contained in:
Dmitry Afanasyev 2022-08-14 23:47:55 +03:00
parent ba76108c28
commit 244765a2b2
4 changed files with 92 additions and 6 deletions

71
.github/workflows/check-lint.yml vendored Normal file
View File

@ -0,0 +1,71 @@
name: lint
on:
push:
branches-ignore:
- test
tags-ignore:
- "*"
pull_request:
branches:
- 'release/**'
jobs:
test:
runs-on: ubuntu-latest
steps:
#----------------------------------------------
# check-out repo and set-up python
#----------------------------------------------
- name: Check out repository
uses: actions/checkout@v3
- name: Set up python
id: setup-python
uses: actions/setup-python@v3
with:
python-version: '3.10'
#----------------------------------------------
# ----- install & configure poetry -----
#----------------------------------------------
- name: Install poetry
env: # Keep in sync with `POETRY_VERSION` in `Dockerfile`
POETRY_VERSION: "1.1.14"
run: |
curl -sSL "https://install.python-poetry.org" | python -
# Adding `poetry` to `$PATH`:
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Set up cache
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ matrix.python-version }}-${{ hashFiles('poetry.lock') }}
#----------------------------------------------
# load cached venv if cache exists
#----------------------------------------------
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
- name: Install dependencies
run: |
poetry config virtualenvs.in-project true
poetry install
poetry run pip install -U pip
#----------------------------------------------
# run test suite
#----------------------------------------------
- name: Analysing the code with mypy
run: |
mypy .
- name: Analysing the code with flake8
run: |
flake8
- name: Analysing code with isort
run: |
isort --check-only app

View File

@ -18,10 +18,10 @@ jobs:
# check-out repo and set-up python
#----------------------------------------------
- name: Check out repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up python
id: setup-python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.10'
#----------------------------------------------
@ -29,7 +29,7 @@ jobs:
#----------------------------------------------
- name: Install poetry
env: # Keep in sync with `POETRY_VERSION` in `Dockerfile`
POETRY_VERSION: "1.1.13"
POETRY_VERSION: "1.1.14"
run: |
curl -sSL "https://install.python-poetry.org" | python -
# Adding `poetry` to `$PATH`:
@ -45,7 +45,7 @@ jobs:
#----------------------------------------------
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}

View File

@ -26,8 +26,8 @@ async def on_shutdown(dp: Dispatcher) -> None:
# Close DB connection (if used)
if driver:
driver.close()
await dispatcher.storage.close()
await dispatcher.storage.wait_closed()
await dp.storage.close()
await dp.storage.wait_closed()
logger.warning('Bye!')

View File

@ -1,7 +1,9 @@
import pytest
from aiogram import Bot, types
from aiogram.dispatcher.filters.builtin import Command
from app.tests.conftest import FakeTelegram
from app.tests.data.factories import UserFactory
from core.bot import dispatcher
pytestmark = [
pytest.mark.asyncio,
@ -16,3 +18,16 @@ async def test_parse_site(bot: Bot) -> None:
result = await bot.me
assert result == user
async def test_command1(bot: Bot) -> None:
dispatcher.bot = bot
handlers = dispatcher.message_handlers.handlers
for handler in handlers:
handl = list(
filter(lambda obj: isinstance(obj.filter, Command), handler.filters)
)
if handl:
command = handl[0].filter.commands[0]
assert command