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 # check-out repo and set-up python
#---------------------------------------------- #----------------------------------------------
- name: Check out repository - name: Check out repository
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Set up python - name: Set up python
id: setup-python id: setup-python
uses: actions/setup-python@v2 uses: actions/setup-python@v3
with: with:
python-version: '3.10' python-version: '3.10'
#---------------------------------------------- #----------------------------------------------
@ -29,7 +29,7 @@ jobs:
#---------------------------------------------- #----------------------------------------------
- name: Install poetry - name: Install poetry
env: # Keep in sync with `POETRY_VERSION` in `Dockerfile` env: # Keep in sync with `POETRY_VERSION` in `Dockerfile`
POETRY_VERSION: "1.1.13" POETRY_VERSION: "1.1.14"
run: | run: |
curl -sSL "https://install.python-poetry.org" | python - curl -sSL "https://install.python-poetry.org" | python -
# Adding `poetry` to `$PATH`: # Adding `poetry` to `$PATH`:
@ -45,7 +45,7 @@ jobs:
#---------------------------------------------- #----------------------------------------------
- name: Load cached venv - name: Load cached venv
id: cached-poetry-dependencies id: cached-poetry-dependencies
uses: actions/cache@v2 uses: actions/cache@v3
with: with:
path: .venv path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} 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) # Close DB connection (if used)
if driver: if driver:
driver.close() driver.close()
await dispatcher.storage.close() await dp.storage.close()
await dispatcher.storage.wait_closed() await dp.storage.wait_closed()
logger.warning('Bye!') logger.warning('Bye!')

View File

@ -1,7 +1,9 @@
import pytest import pytest
from aiogram import Bot, types from aiogram import Bot, types
from aiogram.dispatcher.filters.builtin import Command
from app.tests.conftest import FakeTelegram from app.tests.conftest import FakeTelegram
from app.tests.data.factories import UserFactory from app.tests.data.factories import UserFactory
from core.bot import dispatcher
pytestmark = [ pytestmark = [
pytest.mark.asyncio, pytest.mark.asyncio,
@ -16,3 +18,16 @@ async def test_parse_site(bot: Bot) -> None:
result = await bot.me result = await bot.me
assert result == user 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