🧑‍💻 使用 Ruff 包办所有格式化和检查 (#663)

This commit is contained in:
Azide
2024-12-17 10:52:21 +08:00
committed by GitHub
parent af1609730c
commit 08ad5c288c
126 changed files with 875 additions and 933 deletions
+17 -17
View File
@@ -1,10 +1,10 @@
from time import time
import respx
import pytest
from httpx import Response
from nonebug.app import App
from nonebot.compat import model_dump, type_validate_python
from nonebug.app import App
import pytest
import respx
from .utils import get_file, get_json
@@ -12,7 +12,7 @@ from .utils import get_file, get_json
@pytest.fixture
def arknights(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["arknights"](ProcessContext(DefaultClientManager()))
@@ -44,8 +44,8 @@ def monster_siren_list_1():
@respx.mock
async def test_url_parse(app: App):
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.platform.arknights import Arknights, BulletinData, BulletinListItem, ArkBulletinResponse
from nonebot_bison.platform.arknights import ArkBulletinResponse, Arknights, BulletinData, BulletinListItem
from nonebot_bison.utils import DefaultClientManager, ProcessContext
cid_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/1")
@@ -110,10 +110,10 @@ async def test_url_parse(app: App):
assert p4.url == "http://www.baidu.com/"
@pytest.mark.asyncio()
@pytest.mark.asyncio
async def test_get_date_in_bulletin(app: App):
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
from nonebot_bison.utils import DefaultClientManager, ProcessContext
arknights = Arknights(ProcessContext(DefaultClientManager()))
assert (
@@ -131,11 +131,11 @@ async def test_get_date_in_bulletin(app: App):
)
@pytest.mark.asyncio()
@pytest.mark.asyncio
@respx.mock
async def test_parse_with_breakline(app: App):
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
from nonebot_bison.utils import DefaultClientManager, ProcessContext
detail = get_json("arknights-detail-805")
detail["data"]["header"] = ""
@@ -158,7 +158,7 @@ async def test_parse_with_breakline(app: App):
assert post.title == "【公开招募】 - 标签刷新通知"
@pytest.mark.asyncio()
@pytest.mark.asyncio
@respx.mock
async def test_fetch_new(
arknights,
@@ -168,9 +168,9 @@ async def test_fetch_new(
monster_siren_list_0,
monster_siren_list_1,
):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.platform.arknights import ArknightsPost
from nonebot_bison.post import Post
from nonebot_bison.types import SubUnit, Target
ak_list_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletinList?target=IOS")
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/5716")
@@ -229,7 +229,7 @@ async def test_fetch_new(
assert "brief" == post3.get_priority_themes()[0]
@pytest.mark.render()
@pytest.mark.render
@respx.mock
async def test_send_with_render(
arknights,
@@ -239,8 +239,8 @@ async def test_send_with_render(
monster_siren_list_0,
monster_siren_list_1,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.platform.arknights import ArknightsPost
from nonebot_bison.types import SubUnit, Target
ak_list_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletinList?target=IOS")
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/8397")
@@ -284,13 +284,13 @@ async def test_send_with_render(
assert r
@pytest.mark.render()
@pytest.mark.render
@respx.mock
async def test_parse_title(
app: App,
):
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
from nonebot_bison.utils import DefaultClientManager, ProcessContext
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/8397")
+18 -18
View File
@@ -1,16 +1,16 @@
from datetime import datetime
import random
from time import time
from datetime import datetime
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING, Any, ClassVar
import respx
import pytest
from loguru import logger
from nonebug.app import App
from httpx import URL, Response
from freezegun import freeze_time
from pytest_mock import MockerFixture
from httpx import URL, Response
from loguru import logger
from nonebot.compat import model_dump, type_validate_python
from nonebug.app import App
import pytest
from pytest_mock import MockerFixture
import respx
from .utils import get_json
@@ -28,9 +28,9 @@ if TYPE_CHECKING:
@pytest.fixture
def bilibili(app: App) -> "Bilibili":
from nonebot_bison.utils import ProcessContext
from nonebot_bison.platform import platform_manager
from nonebot_bison.platform.bilibili import BilibiliClientManager
from nonebot_bison.utils import ProcessContext
return platform_manager["bilibili"](ProcessContext(BilibiliClientManager())) # type: ignore
@@ -62,7 +62,7 @@ def without_dynamic(app: App):
async def test_reset_on_exception(app: App):
from strenum import StrEnum
from nonebot_bison.platform.bilibili.fsm import FSM, StateGraph, Transition, ActionReturn, reset_on_exception
from nonebot_bison.platform.bilibili.fsm import FSM, ActionReturn, StateGraph, Transition, reset_on_exception
class State(StrEnum):
A = "A"
@@ -146,12 +146,12 @@ async def test_reset_on_exception(app: App):
@pytest.mark.asyncio
async def test_retry_for_352(app: App, mocker: MockerFixture):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, RawPost
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.platform.bilibili.platforms import ApiCode352Error
from nonebot_bison.utils import ClientManager, ProcessContext, http_client
from nonebot_bison.platform.bilibili.retry import RetryAddon, RetryState, _retry_fsm, retry_for_352
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.post import Post
from nonebot_bison.types import RawPost, Target
from nonebot_bison.utils import ClientManager, ProcessContext, http_client
mocker.patch.object(random, "random", return_value=0.0) # 稳定触发RAISE阶段的随缘刷新
@@ -166,7 +166,7 @@ async def test_retry_for_352(app: App, mocker: MockerFixture):
is_common = True
schedule_interval = 10
enable_tag = False
categories = {}
categories: ClassVar[dict] = {}
has_target = True
raise352 = False
@@ -422,7 +422,7 @@ async def test_dynamic_forword_deleted(bilibili: "Bilibili", bing_dy_list: list)
@pytest.mark.asyncio
@respx.mock
async def test_fetch_new_without_dynamic(bilibili, dummy_user_subinfo, without_dynamic):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
target = Target("161775300")
post_router = respx.get(
@@ -439,8 +439,8 @@ async def test_fetch_new_without_dynamic(bilibili, dummy_user_subinfo, without_d
async def test_fetch_new(bilibili, dummy_user_subinfo):
from nonebot.compat import model_dump, type_validate_python
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.platform.bilibili.models import PostAPI
from nonebot_bison.types import SubUnit, Target
target = Target("161775300")
@@ -483,8 +483,8 @@ async def test_fetch_new(bilibili, dummy_user_subinfo):
async def test_fetch_new_live_rcmd(bilibili: "Bilibili", dummy_user_subinfo):
from nonebot.compat import model_dump, type_validate_python
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.platform.bilibili.models import PostAPI
from nonebot_bison.types import SubUnit, Target
target = Target("13164144")
+4 -4
View File
@@ -1,9 +1,9 @@
import typing
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -14,7 +14,7 @@ if typing.TYPE_CHECKING:
@pytest.fixture
def bili_bangumi(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["bilibili-bangumi"](ProcessContext(DefaultClientManager()))
@@ -38,7 +38,7 @@ async def test_parse_target(bili_bangumi: "BilibiliBangumi"):
@pytest.mark.asyncio
@respx.mock
async def test_fetch_bilibili_bangumi_status(bili_bangumi: "BilibiliBangumi", dummy_user_subinfo):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
bili_bangumi_router = respx.get("https://api.bilibili.com/pgc/review/user?media_id=28235413")
bili_bangumi_detail_router = respx.get("https://api.bilibili.com/pgc/view/web/season?season_id=39719")
+10 -10
View File
@@ -1,10 +1,10 @@
from copy import deepcopy
from typing import TYPE_CHECKING
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
@pytest.fixture
def bili_live(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["bilibili-live"](ProcessContext(DefaultClientManager()))
@@ -33,7 +33,7 @@ def dummy_only_open_user_subinfo(app: App):
@pytest.mark.asyncio
@respx.mock
async def test_fetch_bililive_no_room(bili_live, dummy_only_open_user_subinfo):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
mock_bili_live_status["data"] = {}
@@ -53,7 +53,7 @@ async def test_fetch_bililive_no_room(bili_live, dummy_only_open_user_subinfo):
@respx.mock
async def test_fetch_first_live(bili_live, dummy_only_open_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
empty_bili_live_status = deepcopy(mock_bili_live_status)
@@ -90,7 +90,7 @@ async def test_fetch_first_live(bili_live, dummy_only_open_user_subinfo):
@respx.mock
async def test_fetch_bililive_only_live_open(bili_live: "Bilibililive", dummy_only_open_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
@@ -141,11 +141,11 @@ def dummy_only_title_user_subinfo(app: App):
return UserSubInfo(user=user, categories=[2], tags=[])
@pytest.mark.asyncio()
@pytest.mark.asyncio
@respx.mock
async def test_fetch_bililive_only_title_change(bili_live, dummy_only_title_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
target = Target("13164144")
@@ -204,7 +204,7 @@ def dummy_only_close_user_subinfo(app: App):
@respx.mock
async def test_fetch_bililive_only_close(bili_live, dummy_only_close_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
target = Target("13164144")
@@ -264,7 +264,7 @@ def dummy_bililive_user_subinfo(app: App):
@respx.mock
async def test_fetch_bililive_combo(bili_live, dummy_bililive_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
mock_bili_live_status = get_json("bili_live_status.json")
target = Target("13164144")
+9 -9
View File
@@ -1,10 +1,10 @@
from typing import TYPE_CHECKING
import respx
import pytest
from httpx import Response
from nonebug.app import App
from nonebot.compat import type_validate_python
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -24,9 +24,9 @@ def dummy_only_open_user_subinfo(app: App):
@pytest.fixture
def ceobecanteen(app: App):
from nonebot_bison.utils import ProcessContext
from nonebot_bison.platform import platform_manager
from nonebot_bison.platform.ceobecanteen.platform import CeobeCanteenClientManager
from nonebot_bison.utils import ProcessContext
return platform_manager["ceobecanteen"](ProcessContext(CeobeCanteenClientManager()))
@@ -71,7 +71,7 @@ def ceobecanteen_cookies_1() -> dict:
return get_json("ceobecanteen_cookies_1.json")
@pytest.mark.asyncio()
@pytest.mark.asyncio
async def test_parse_retweet(app: App):
from nonebot_bison.platform.ceobecanteen.models import CookiesResponse
@@ -79,7 +79,7 @@ async def test_parse_retweet(app: App):
assert cookie_with_retweet.data.cookies[0].item.retweeted
@pytest.mark.render()
@pytest.mark.render
async def test_ceobe_snapshot(app: App, ceobecanteen: "CeobeCanteen"):
from nonebot_bison.platform.ceobecanteen.models import CeobeCookie
@@ -113,7 +113,7 @@ async def test_ceobe_snapshot(app: App, ceobecanteen: "CeobeCanteen"):
@pytest.mark.skip("极限测试, 不在CI中运行")
@pytest.mark.asyncio()
@pytest.mark.asyncio
async def test_parse_crazy(app: App, ceobecanteen):
from nonebot_plugin_saa import Image
@@ -139,7 +139,7 @@ async def test_parse_crazy(app: App, ceobecanteen):
show(ext((await post4.generate_messages())[0][0])) # type: ignore
@pytest.mark.asyncio()
@pytest.mark.asyncio
@respx.mock
async def test_batch_fetch_new_with_single(
app: App,
@@ -220,7 +220,7 @@ async def test_batch_fetch_new_with_single(
await post3.generate_messages()
@pytest.mark.asyncio()
@pytest.mark.asyncio
@respx.mock
async def test_parse_target_fuzzy(app: App, ceobecanteen: "CeobeCanteen", dummy_target, ceobecanteen_targets):
from nonebot_bison.platform.ceobecanteen import CeobeCanteen
+4 -4
View File
@@ -1,7 +1,7 @@
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -9,7 +9,7 @@ from .utils import get_json
@pytest.fixture
def ff14(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["ff14"](ProcessContext(DefaultClientManager()))
@@ -28,7 +28,7 @@ def ff14_newdata_json_1():
@respx.mock
async def test_fetch_new(ff14, dummy_user_subinfo, ff14_newdata_json_0, ff14_newdata_json_1):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
newdata = respx.get(
"https://cqnews.web.sdo.com/api/news/newsList?gameCode=ff&CategoryCode=5309,5310,5311,5312,5313&pageIndex=0&pageSize=5"
+4 -4
View File
@@ -1,10 +1,10 @@
import time
import typing
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -15,7 +15,7 @@ if typing.TYPE_CHECKING:
@pytest.fixture
def ncm_artist(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["ncm-artist"](ProcessContext(DefaultClientManager()))
@@ -41,7 +41,7 @@ def ncm_artist_1(ncm_artist_raw: dict):
@pytest.mark.asyncio
@respx.mock
async def test_fetch_new(ncm_artist, ncm_artist_0, ncm_artist_1, dummy_user_subinfo):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
ncm_router = respx.get("https://music.163.com/api/artist/albums/32540734")
ncm_router.mock(return_value=Response(200, json=ncm_artist_0))
+4 -4
View File
@@ -1,10 +1,10 @@
import time
import typing
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import respx
from .utils import get_json
@@ -15,7 +15,7 @@ if typing.TYPE_CHECKING:
@pytest.fixture
def ncm_radio(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["ncm-radio"](ProcessContext(DefaultClientManager()))
@@ -42,7 +42,7 @@ def ncm_radio_1(ncm_radio_raw: dict):
@respx.mock
async def test_fetch_new(ncm_radio, ncm_radio_0, ncm_radio_1, dummy_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
ncm_router = respx.post("http://music.163.com/api/dj/program/byradio")
ncm_router.mock(return_value=Response(200, json=ncm_radio_0))
+43 -41
View File
@@ -1,15 +1,16 @@
from time import time
from typing import Any
from typing import Any, ClassVar
import pytest
from nonebug.app import App
import pytest
now = time()
passed = now - 3 * 60 * 60
raw_post_list_1 = [{"id": 1, "text": "p1", "date": now, "tags": ["tag1"], "category": 1}]
raw_post_list_2 = raw_post_list_1 + [
raw_post_list_2 = [
*raw_post_list_1,
{"id": 2, "text": "p2", "date": now, "tags": ["tag1"], "category": 1},
{"id": 3, "text": "p3", "date": now, "tags": ["tag2"], "category": 2},
{"id": 4, "text": "p4", "date": now, "tags": ["tag2"], "category": 3},
@@ -36,9 +37,9 @@ def user_info_factory(app: App, dummy_user):
@pytest.fixture
def mock_platform_without_cats_tags(app: App):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, RawPost
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.post import Post
from nonebot_bison.types import RawPost, Target
class MockPlatform(NewMessage):
platform_name = "mock_platform"
@@ -47,7 +48,7 @@ def mock_platform_without_cats_tags(app: App):
is_common = True
schedule_interval = 10
enable_tag = False
categories = {}
categories: ClassVar[dict] = {}
has_target = True
sub_index = 0
@@ -83,15 +84,15 @@ def mock_platform_without_cats_tags(app: App):
@pytest.fixture
def mock_platform(app: App):
from nonebot_bison.post import Post
from nonebot_bison.utils import Site
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.types import Tag, Target, RawPost, Category
from nonebot_bison.post import Post
from nonebot_bison.types import Category, RawPost, Tag, Target
from nonebot_bison.utils import Site
class MockSite(Site):
name = "mock_site"
schedule_type = "interval"
schedule_setting = {"seconds": 100}
schedule_setting: ClassVar[dict] = {"seconds": 100}
class MockPlatform(NewMessage):
platform_name = "mock_platform"
@@ -101,7 +102,7 @@ def mock_platform(app: App):
enable_tag = True
has_target = True
site = MockSite
categories = {
categories: ClassVar[dict] = {
Category(1): "转发",
Category(2): "视频",
}
@@ -150,16 +151,16 @@ def mock_site(app):
class MockSite(Site):
name = "mock_site"
schedule_type = "interval"
schedule_setting = {"seconds": 100}
schedule_setting: ClassVar[dict] = {"seconds": 100}
return MockSite
@pytest.fixture
def mock_platform_no_target(app: App, mock_site):
from nonebot_bison.platform.platform import CategoryNotSupport, NewMessage
from nonebot_bison.post import Post
from nonebot_bison.types import Tag, Target, RawPost, Category
from nonebot_bison.platform.platform import NewMessage, CategoryNotSupport
from nonebot_bison.types import Category, RawPost, Tag, Target
class MockPlatform(NewMessage):
platform_name = "mock_platform"
@@ -169,7 +170,7 @@ def mock_platform_no_target(app: App, mock_site):
site = mock_site
enable_tag = True
has_target = False
categories = {Category(1): "转发", Category(2): "视频", Category(3): "不支持"}
categories: ClassVar[dict] = {Category(1): "转发", Category(2): "视频", Category(3): "不支持"}
sub_index = 0
@@ -212,9 +213,9 @@ def mock_platform_no_target(app: App, mock_site):
@pytest.fixture
def mock_platform_no_target_2(app: App, mock_site):
from nonebot_bison.post import Post
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.types import Tag, Target, RawPost, Category
from nonebot_bison.post import Post
from nonebot_bison.types import Category, RawPost, Tag, Target
class MockPlatform(NewMessage):
platform_name = "mock_platform"
@@ -224,7 +225,7 @@ def mock_platform_no_target_2(app: App, mock_site):
is_common = True
enable_tag = True
has_target = False
categories = {
categories: ClassVar[dict] = {
Category(4): "leixing4",
Category(5): "leixing5",
}
@@ -259,7 +260,8 @@ def mock_platform_no_target_2(app: App, mock_site):
async def get_sub_list(cls, _: "Target"):
list_1 = [{"id": 5, "text": "p5", "date": now, "tags": ["tag1"], "category": 4}]
list_2 = list_1 + [
list_2 = [
*list_1,
{"id": 6, "text": "p6", "date": now, "tags": ["tag1"], "category": 4},
{"id": 7, "text": "p7", "date": now, "tags": ["tag2"], "category": 5},
]
@@ -274,9 +276,9 @@ def mock_platform_no_target_2(app: App, mock_site):
@pytest.fixture
def mock_status_change(app: App):
from nonebot_bison.post import Post
from nonebot_bison.platform.platform import StatusChange
from nonebot_bison.types import Target, RawPost, Category
from nonebot_bison.post import Post
from nonebot_bison.types import Category, RawPost, Target
class MockPlatform(StatusChange):
platform_name = "mock_platform"
@@ -285,9 +287,9 @@ def mock_status_change(app: App):
is_common = True
enable_tag = False
schedule_type = "interval"
schedule_kw = {"seconds": 10}
schedule_kw: ClassVar[dict] = {"seconds": 10}
has_target = False
categories = {
categories: ClassVar[dict] = {
Category(1): "转发",
Category(2): "视频",
}
@@ -323,8 +325,8 @@ def mock_status_change(app: App):
@pytest.mark.asyncio
async def test_new_message_target_without_cats_tags(mock_platform_without_cats_tags, user_info_factory):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.types import SubUnit, Target
from nonebot_bison.utils import DefaultClientManager, ProcessContext
res1 = await mock_platform_without_cats_tags(ProcessContext(DefaultClientManager())).fetch_new_post(
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
@@ -344,8 +346,8 @@ async def test_new_message_target_without_cats_tags(mock_platform_without_cats_t
@pytest.mark.asyncio
async def test_new_message_target(mock_platform, user_info_factory):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.types import SubUnit, Target
from nonebot_bison.utils import DefaultClientManager, ProcessContext
res1 = await mock_platform(ProcessContext(DefaultClientManager())).fetch_new_post(
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
@@ -379,8 +381,8 @@ async def test_new_message_target(mock_platform, user_info_factory):
@pytest.mark.asyncio
async def test_new_message_no_target(mock_platform_no_target, user_info_factory):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.types import SubUnit, Target
from nonebot_bison.utils import DefaultClientManager, ProcessContext
res1 = await mock_platform_no_target(ProcessContext(DefaultClientManager())).fetch_new_post(
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
@@ -418,8 +420,8 @@ async def test_new_message_no_target(mock_platform_no_target, user_info_factory)
@pytest.mark.asyncio
async def test_status_change(mock_status_change, user_info_factory):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.types import SubUnit, Target
from nonebot_bison.utils import DefaultClientManager, ProcessContext
res1 = await mock_status_change(ProcessContext(DefaultClientManager())).fetch_new_post(
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
@@ -458,9 +460,9 @@ async def test_group(
mock_platform_no_target_2,
user_info_factory,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.platform.platform import make_no_target_group
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.types import SubUnit, Target
from nonebot_bison.utils import DefaultClientManager, ProcessContext
dummy = Target("dummy")
@@ -482,11 +484,11 @@ async def test_group(
async def test_batch_fetch_new_message(app: App):
from nonebot_plugin_saa import TargetQQGroup
from nonebot_bison.post import Post
from nonebot_bison.utils import DefaultClientManager
from nonebot_bison.platform.platform import NewMessage
from nonebot_bison.post import Post
from nonebot_bison.types import RawPost, SubUnit, Target, UserSubInfo
from nonebot_bison.utils import DefaultClientManager
from nonebot_bison.utils.context import ProcessContext
from nonebot_bison.types import Target, RawPost, SubUnit, UserSubInfo
class BatchNewMessage(NewMessage):
platform_name = "mock_platform"
@@ -495,7 +497,7 @@ async def test_batch_fetch_new_message(app: App):
is_common = True
schedule_interval = 10
enable_tag = False
categories = {}
categories: ClassVar[dict] = {}
has_target = True
sub_index = 0
@@ -569,11 +571,11 @@ async def test_batch_fetch_new_message(app: App):
async def test_batch_fetch_compare_status(app: App):
from nonebot_plugin_saa import TargetQQGroup
from nonebot_bison.platform.platform import StatusChange
from nonebot_bison.post import Post
from nonebot_bison.types import Category, RawPost, SubUnit, Target, UserSubInfo
from nonebot_bison.utils import DefaultClientManager
from nonebot_bison.utils.context import ProcessContext
from nonebot_bison.platform.platform import StatusChange
from nonebot_bison.types import Target, RawPost, SubUnit, Category, UserSubInfo
class BatchStatusChange(StatusChange):
platform_name = "mock_platform"
@@ -582,9 +584,9 @@ async def test_batch_fetch_compare_status(app: App):
is_common = True
enable_tag = False
schedule_type = "interval"
schedule_kw = {"seconds": 10}
schedule_kw: ClassVar[dict] = {"seconds": 10}
has_target = True
categories = {
categories: ClassVar[dict] = {
Category(1): "转发",
Category(2): "视频",
}
+3 -3
View File
@@ -1,5 +1,5 @@
import pytest
from nonebug.app import App
import pytest
from .utils import get_json
@@ -13,7 +13,7 @@ def test_cases():
@pytest.mark.asyncio
async def test_filter_user_custom_tag(app: App, test_cases):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
bilibili = platform_manager["bilibili"](ProcessContext(DefaultClientManager()))
for case in test_cases:
@@ -25,7 +25,7 @@ async def test_filter_user_custom_tag(app: App, test_cases):
@pytest.mark.asyncio
async def test_tag_separator(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
bilibili = platform_manager["bilibili"](ProcessContext(DefaultClientManager()))
tags = ["~111", "222", "333", "~444", "555"]
+9 -9
View File
@@ -1,12 +1,12 @@
import typing
from datetime import datetime
import typing
import xml.etree.ElementTree as ET
import pytz
import respx
import pytest
from httpx import Response
from nonebug.app import App
import pytest
import pytz
import respx
from .utils import get_file
@@ -35,7 +35,7 @@ def user_info_factory(app: App, dummy_user):
@pytest.fixture
def rss(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["rss"](ProcessContext(DefaultClientManager()))
@@ -71,7 +71,7 @@ async def test_fetch_new_1(
user_info_factory,
update_time_feed_1,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
## 标题重复的情况
rss_router = respx.get("https://rsshub.app/twitter/user/ArknightsStaff")
@@ -113,7 +113,7 @@ async def test_fetch_new_2(
user_info_factory,
update_time_feed_2,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
## 标题与正文不重复的情况
rss_router = respx.get("https://www.ruanyifeng.com/blog/atom.xml")
@@ -148,7 +148,7 @@ async def test_fetch_new_3(
user_info_factory,
update_time_feed_3,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
## 只有<updated>没有<published>
rss_router = respx.get("https://github.com/R3nzTheCodeGOD/R3nzSkin/releases.atom")
@@ -172,7 +172,7 @@ async def test_fetch_new_4(
rss,
user_info_factory,
):
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
## 没有日期信息的情况
rss_router = respx.get("https://rsshub.app/wallhaven/hot?limit=5")
+8 -8
View File
@@ -1,12 +1,12 @@
import typing
from datetime import datetime
import typing
import respx
import pytest
import feedparser
from pytz import timezone
from httpx import AsyncClient, Response
from nonebug.app import App
from httpx import Response, AsyncClient
import pytest
from pytz import timezone
import respx
from .utils import get_file, get_json
@@ -19,7 +19,7 @@ image_cdn_router = respx.route(host__regex=r"wx\d.sinaimg.cn", path__startswith=
@pytest.fixture
def weibo(app: App):
from nonebot_bison.platform import platform_manager
from nonebot_bison.utils import ProcessContext, DefaultClientManager
from nonebot_bison.utils import DefaultClientManager, ProcessContext
return platform_manager["weibo"](ProcessContext(DefaultClientManager()))
@@ -42,7 +42,7 @@ async def test_get_name(weibo):
@respx.mock
async def test_fetch_new(weibo, dummy_user_subinfo):
from nonebot_bison.post import Post
from nonebot_bison.types import Target, SubUnit
from nonebot_bison.types import SubUnit, Target
ak_list_router = respx.get("https://m.weibo.cn/api/container/getIndex?containerid=1076036279793937")
detail_router = respx.get("https://m.weibo.cn/statuses/extend?id=4649031014551911")
@@ -184,7 +184,7 @@ async def test_rsshub_compare(weibo):
test_post = {
"mblog": {
"text": ( # noqa
"text": (
'<a href="https://m.weibo.cn/search?containerid=231522type%3D1%26t%3D10%26q%3D%23%E5%88%9A%E5%87%BA%E7%94%9F%E7%9A%84%E5%B0%8F%E7%BE%8A%E9%A9%BC%E9%95%BF%E5%95%A5%E6%A0%B7%23&extparam=%23%E5%88%9A%E5%87%BA%E7%94%9F%E7%9A%84%E5%B0%8F%E7%BE%8A%E9%A9%BC%E9%95%BF%E5%95%A5%E6%A0%B7%23&luicode=10000011&lfid=1076036003966749"'
' data-hide=""><span class="surl-text">#刚出生的小羊驼长啥样#</span></a> <br />小羊驼三三来也<span'
' class="url-icon"><img alt=[好喜欢]'