mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
commit
167cdc416b
@ -1,235 +1,236 @@
|
||||
# from collections.abc import Callable
|
||||
# from pathlib import Path
|
||||
# import platform
|
||||
# from typing import cast
|
||||
|
||||
# import nonebot
|
||||
# from nonebot.adapters.onebot.v11 import Bot
|
||||
# from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||
# from nonebug import App
|
||||
# from pytest_mock import MockerFixture
|
||||
# from respx import MockRouter
|
||||
from collections.abc import Callable
|
||||
from pathlib import Path
|
||||
import platform
|
||||
from typing import cast
|
||||
|
||||
# from tests.config import BotId, GroupId, MessageId, UserId
|
||||
# from tests.utils import _v11_group_message_event
|
||||
import nonebot
|
||||
from nonebot.adapters.onebot.v11 import Bot
|
||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||
from nonebug import App
|
||||
from pytest_mock import MockerFixture
|
||||
from respx import MockRouter
|
||||
|
||||
# platform_uname = platform.uname_result(
|
||||
# system="Linux",
|
||||
# node="zhenxun",
|
||||
# release="5.15.0-1027-azure",
|
||||
# version="#1 SMP Debian 5.15.0-1027-azure",
|
||||
# machine="x86_64",
|
||||
# ) # type: ignore
|
||||
# cpuinfo_get_cpu_info = {"brand_raw": "Intel(R) Core(TM) i7-10700K"}
|
||||
from tests.config import BotId, GroupId, MessageId, UserId
|
||||
from tests.utils import _v11_group_message_event
|
||||
|
||||
platform_uname = platform.uname_result(
|
||||
system="Linux",
|
||||
node="zhenxun",
|
||||
release="5.15.0-1027-azure",
|
||||
version="#1 SMP Debian 5.15.0-1027-azure",
|
||||
machine="x86_64",
|
||||
) # type: ignore
|
||||
cpuinfo_get_cpu_info = {"brand_raw": "Intel(R) Core(TM) i7-10700K"}
|
||||
|
||||
|
||||
# def init_mocker(mocker: MockerFixture, tmp_path: Path):
|
||||
# mock_psutil = mocker.patch("zhenxun.builtin_plugins.check.data_source.psutil")
|
||||
# mock_cpuinfo = mocker.patch("zhenxun.builtin_plugins.check.data_source.cpuinfo")
|
||||
# mock_cpuinfo.get_cpu_info.return_value = cpuinfo_get_cpu_info
|
||||
def init_mocker(mocker: MockerFixture, tmp_path: Path):
|
||||
mock_psutil = mocker.patch("zhenxun.builtin_plugins.check.data_source.psutil")
|
||||
mock_cpuinfo = mocker.patch("zhenxun.builtin_plugins.check.data_source.cpuinfo")
|
||||
mock_cpuinfo.get_cpu_info.return_value = cpuinfo_get_cpu_info
|
||||
|
||||
# mock_platform = mocker.patch("zhenxun.builtin_plugins.check.data_source.platform")
|
||||
# mock_platform.uname.return_value = platform_uname
|
||||
mock_platform = mocker.patch("zhenxun.builtin_plugins.check.data_source.platform")
|
||||
mock_platform.uname.return_value = platform_uname
|
||||
|
||||
# mock_template_to_pic = mocker.patch(
|
||||
mock_template_to_pic = mocker.patch("zhenxun.builtin_plugins.check.template_to_pic")
|
||||
mock_template_to_pic_return = mocker.AsyncMock()
|
||||
mock_template_to_pic.return_value = mock_template_to_pic_return
|
||||
|
||||
# "zhenxun.builtin_plugins.check.template_to_pic"
|
||||
mock_build_message = mocker.patch(
|
||||
"zhenxun.builtin_plugins.check.MessageUtils.build_message"
|
||||
)
|
||||
mock_build_message_return = mocker.AsyncMock()
|
||||
mock_build_message.return_value = mock_build_message_return
|
||||
|
||||
# )
|
||||
# mock_template_to_pic_return = mocker.AsyncMock()
|
||||
# mock_template_to_pic.return_value = mock_template_to_pic_return
|
||||
|
||||
# mock_build_message = mocker.patch(
|
||||
# "zhenxun.builtin_plugins.check.MessageUtils.build_message"
|
||||
# )
|
||||
# mock_build_message_return = mocker.AsyncMock()
|
||||
# mock_build_message.return_value = mock_build_message_return
|
||||
|
||||
# mock_template_path_new = tmp_path / "resources" / "template"
|
||||
# mocker.patch(
|
||||
# "zhenxun.builtin_plugins.check.TEMPLATE_PATH", new=mock_template_path_new
|
||||
# )
|
||||
# return (
|
||||
# mock_psutil,
|
||||
# mock_cpuinfo,
|
||||
# mock_platform,
|
||||
# mock_template_to_pic,
|
||||
# mock_template_to_pic_return,
|
||||
# mock_build_message,
|
||||
# mock_build_message_return,
|
||||
# mock_template_path_new,
|
||||
# )
|
||||
mock_template_path_new = tmp_path / "resources" / "template"
|
||||
mocker.patch(
|
||||
"zhenxun.builtin_plugins.check.TEMPLATE_PATH", new=mock_template_path_new
|
||||
)
|
||||
return (
|
||||
mock_psutil,
|
||||
mock_cpuinfo,
|
||||
mock_platform,
|
||||
mock_template_to_pic,
|
||||
mock_template_to_pic_return,
|
||||
mock_build_message,
|
||||
mock_build_message_return,
|
||||
mock_template_path_new,
|
||||
)
|
||||
|
||||
|
||||
# async def test_check(
|
||||
# app: App,
|
||||
# mocker: MockerFixture,
|
||||
# mocked_api: MockRouter,
|
||||
# create_bot: Callable,
|
||||
# tmp_path: Path,
|
||||
# ) -> None:
|
||||
# """
|
||||
# 测试自检
|
||||
# """
|
||||
# from zhenxun.builtin_plugins.check import _matcher
|
||||
# from zhenxun.builtin_plugins.check.data_source import __get_version
|
||||
# from zhenxun.configs.config import BotConfig
|
||||
async def test_check(
|
||||
app: App,
|
||||
mocker: MockerFixture,
|
||||
mocked_api: MockRouter,
|
||||
create_bot: Callable,
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
"""
|
||||
测试自检
|
||||
"""
|
||||
from zhenxun.builtin_plugins.check import _self_check_matcher
|
||||
from zhenxun.builtin_plugins.check.data_source import __get_version
|
||||
from zhenxun.configs.config import BotConfig
|
||||
|
||||
# (
|
||||
# mock_psutil,
|
||||
# mock_cpuinfo,
|
||||
# mock_platform,
|
||||
# mock_template_to_pic,
|
||||
# mock_template_to_pic_return,
|
||||
# mock_build_message,
|
||||
# mock_build_message_return,
|
||||
# mock_template_path_new,
|
||||
# ) = init_mocker(mocker, tmp_path)
|
||||
# async with app.test_matcher(_matcher) as ctx:
|
||||
# bot = create_bot(ctx)
|
||||
# bot: Bot = cast(Bot, bot)
|
||||
# raw_message = "自检"
|
||||
# event: GroupMessageEvent = _v11_group_message_event(
|
||||
# message=raw_message,
|
||||
# self_id=BotId.QQ_BOT,
|
||||
# user_id=UserId.SUPERUSER,
|
||||
# group_id=GroupId.GROUP_ID_LEVEL_5,
|
||||
# message_id=MessageId.MESSAGE_ID_3,
|
||||
# to_me=True,
|
||||
# )
|
||||
# ctx.receive_event(bot=bot, event=event)
|
||||
# mock_template_to_pic.assert_awaited_once_with(
|
||||
# template_path=str((mock_template_path_new / "check").absolute()),
|
||||
# template_name="main.html",
|
||||
# templates={
|
||||
# "data": {
|
||||
# "cpu_info": "1.0% - 1.0Ghz [1 core]",
|
||||
# "cpu_process": 1.0,
|
||||
# "ram_info": "1.0 / 1.0 GB",
|
||||
# "ram_process": 100.0,
|
||||
# "swap_info": "1.0 / 1.0 GB",
|
||||
# "swap_process": 100.0,
|
||||
# "disk_info": "1.0 / 1.0 GB",
|
||||
# "disk_process": 100.0,
|
||||
# "brand_raw": cpuinfo_get_cpu_info["brand_raw"],
|
||||
# "baidu": "red",
|
||||
# "google": "red",
|
||||
# "system": f"{platform_uname.system} " f"{platform_uname.release}",
|
||||
# "version": __get_version(),
|
||||
# "plugin_count": len(nonebot.get_loaded_plugins()),
|
||||
# "nickname": BotConfig.self_nickname,
|
||||
# }
|
||||
# },
|
||||
# pages={
|
||||
# "viewport": {"width": 195, "height": 750},
|
||||
# "base_url": f"file://{mock_template_path_new.absolute()}",
|
||||
# },
|
||||
# wait=2,
|
||||
# )
|
||||
# mock_template_to_pic.assert_awaited_once()
|
||||
# mock_build_message.assert_called_once_with(mock_template_to_pic_return)
|
||||
# mock_build_message_return.send.assert_awaited_once()
|
||||
(
|
||||
mock_psutil,
|
||||
mock_cpuinfo,
|
||||
mock_platform,
|
||||
mock_template_to_pic,
|
||||
mock_template_to_pic_return,
|
||||
mock_build_message,
|
||||
mock_build_message_return,
|
||||
mock_template_path_new,
|
||||
) = init_mocker(mocker, tmp_path)
|
||||
async with app.test_matcher(_self_check_matcher) as ctx:
|
||||
bot = create_bot(ctx)
|
||||
bot: Bot = cast(Bot, bot)
|
||||
raw_message = "自检"
|
||||
event: GroupMessageEvent = _v11_group_message_event(
|
||||
message=raw_message,
|
||||
self_id=BotId.QQ_BOT,
|
||||
user_id=UserId.SUPERUSER,
|
||||
group_id=GroupId.GROUP_ID_LEVEL_5,
|
||||
message_id=MessageId.MESSAGE_ID_3,
|
||||
to_me=True,
|
||||
)
|
||||
ctx.receive_event(bot=bot, event=event)
|
||||
mock_template_to_pic.assert_awaited_once_with(
|
||||
template_path=str((mock_template_path_new / "check").absolute()),
|
||||
template_name="main.html",
|
||||
templates={
|
||||
"data": {
|
||||
"cpu_info": "1.0% - 1.0Ghz [1 core]",
|
||||
"cpu_process": 1.0,
|
||||
"ram_info": "1.0 / 1.0 GB",
|
||||
"ram_process": 100.0,
|
||||
"swap_info": "1.0 / 1.0 GB",
|
||||
"swap_process": 100.0,
|
||||
"disk_info": "1.0 / 1.0 GB",
|
||||
"disk_process": 100.0,
|
||||
"brand_raw": cpuinfo_get_cpu_info["brand_raw"],
|
||||
"baidu": "red",
|
||||
"google": "red",
|
||||
"system": f"{platform_uname.system} " f"{platform_uname.release}",
|
||||
"version": __get_version(),
|
||||
"plugin_count": len(nonebot.get_loaded_plugins()),
|
||||
"nickname": BotConfig.self_nickname,
|
||||
}
|
||||
},
|
||||
pages={
|
||||
"viewport": {"width": 195, "height": 750},
|
||||
"base_url": f"file://{mock_template_path_new.absolute()}",
|
||||
},
|
||||
wait=2,
|
||||
)
|
||||
mock_template_to_pic.assert_awaited_once()
|
||||
mock_build_message.assert_called_once_with(mock_template_to_pic_return)
|
||||
mock_build_message_return.send.assert_awaited_once()
|
||||
|
||||
|
||||
# async def test_check_arm(
|
||||
# app: App,
|
||||
# mocker: MockerFixture,
|
||||
# mocked_api: MockRouter,
|
||||
# create_bot: Callable,
|
||||
# tmp_path: Path,
|
||||
# ) -> None:
|
||||
# """
|
||||
# 测试自检(arm)
|
||||
# """
|
||||
# from zhenxun.builtin_plugins.check import _matcher
|
||||
# from zhenxun.builtin_plugins.check.data_source import __get_version
|
||||
# from zhenxun.configs.config import BotConfig
|
||||
async def test_check_arm(
|
||||
app: App,
|
||||
mocker: MockerFixture,
|
||||
mocked_api: MockRouter,
|
||||
create_bot: Callable,
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
"""
|
||||
测试自检(arm)
|
||||
"""
|
||||
from zhenxun.builtin_plugins.check import _self_check_matcher
|
||||
from zhenxun.builtin_plugins.check.data_source import __get_version
|
||||
from zhenxun.configs.config import BotConfig
|
||||
|
||||
platform_uname_arm = platform.uname_result(
|
||||
system="Linux",
|
||||
node="zhenxun",
|
||||
release="5.15.0-1017-oracle",
|
||||
version="#22~20.04.1-Ubuntu SMP Wed Aug 24 11:13:15 UTC 2022",
|
||||
machine="aarch64",
|
||||
) # type: ignore
|
||||
mock_subprocess_check_output = mocker.patch(
|
||||
"zhenxun.builtin_plugins.check.data_source.subprocess.check_output"
|
||||
)
|
||||
mock_environ_copy = mocker.patch(
|
||||
"zhenxun.builtin_plugins.check.data_source.os.environ.copy"
|
||||
)
|
||||
mock_environ_copy_return = mocker.MagicMock()
|
||||
mock_environ_copy.return_value = mock_environ_copy_return
|
||||
(
|
||||
mock_psutil,
|
||||
mock_cpuinfo,
|
||||
mock_platform,
|
||||
mock_template_to_pic,
|
||||
mock_template_to_pic_return,
|
||||
mock_build_message,
|
||||
mock_build_message_return,
|
||||
mock_template_path_new,
|
||||
) = init_mocker(mocker, tmp_path)
|
||||
|
||||
mock_platform.uname.return_value = platform_uname_arm
|
||||
mock_cpuinfo.get_cpu_info.return_value = {}
|
||||
mock_psutil.cpu_freq.return_value = {}
|
||||
|
||||
async with app.test_matcher(_self_check_matcher) as ctx:
|
||||
bot = create_bot(ctx)
|
||||
bot: Bot = cast(Bot, bot)
|
||||
raw_message = "自检"
|
||||
event: GroupMessageEvent = _v11_group_message_event(
|
||||
message=raw_message,
|
||||
self_id=BotId.QQ_BOT,
|
||||
user_id=UserId.SUPERUSER,
|
||||
group_id=GroupId.GROUP_ID_LEVEL_5,
|
||||
message_id=MessageId.MESSAGE_ID_3,
|
||||
to_me=True,
|
||||
)
|
||||
ctx.receive_event(bot=bot, event=event)
|
||||
mock_template_to_pic.assert_awaited_once_with(
|
||||
template_path=str((mock_template_path_new / "check").absolute()),
|
||||
template_name="main.html",
|
||||
templates={
|
||||
"data": {
|
||||
"cpu_info": "1.0% - 0.0Ghz [1 core]",
|
||||
"cpu_process": 1.0,
|
||||
"ram_info": "1.0 / 1.0 GB",
|
||||
"ram_process": 100.0,
|
||||
"swap_info": "1.0 / 1.0 GB",
|
||||
"swap_process": 100.0,
|
||||
"disk_info": "1.0 / 1.0 GB",
|
||||
"disk_process": 100.0,
|
||||
"brand_raw": "",
|
||||
"baidu": "red",
|
||||
"google": "red",
|
||||
"system": f"{platform_uname_arm.system} "
|
||||
f"{platform_uname_arm.release}",
|
||||
"version": __get_version(),
|
||||
"plugin_count": len(nonebot.get_loaded_plugins()),
|
||||
"nickname": BotConfig.self_nickname,
|
||||
}
|
||||
},
|
||||
pages={
|
||||
"viewport": {"width": 195, "height": 750},
|
||||
"base_url": f"file://{mock_template_path_new.absolute()}",
|
||||
},
|
||||
wait=2,
|
||||
)
|
||||
mock_subprocess_check_output.assert_has_calls(
|
||||
[
|
||||
mocker.call(["lscpu"], env=mock_environ_copy_return),
|
||||
mocker.call().decode(),
|
||||
mocker.call().decode().splitlines(),
|
||||
mocker.call().decode().splitlines().__iter__(),
|
||||
mocker.call(["dmidecode", "-s", "processor-frequency"]),
|
||||
mocker.call().decode(),
|
||||
mocker.call().decode().split(),
|
||||
mocker.call().decode().split().__getitem__(0),
|
||||
mocker.call().decode().split().__getitem__().__float__(),
|
||||
] # type: ignore
|
||||
)
|
||||
mock_template_to_pic.assert_awaited_once()
|
||||
mock_build_message.assert_called_once_with(mock_template_to_pic_return)
|
||||
mock_build_message_return.send.assert_awaited_once()
|
||||
|
||||
|
||||
# platform_uname_arm = platform.uname_result(
|
||||
# system="Linux",
|
||||
# node="zhenxun",
|
||||
# release="5.15.0-1017-oracle",
|
||||
# version="#22~20.04.1-Ubuntu SMP Wed Aug 24 11:13:15 UTC 2022",
|
||||
# machine="aarch64",
|
||||
# ) # type: ignore
|
||||
# mock_subprocess_check_output = mocker.patch(
|
||||
# "zhenxun.builtin_plugins.check.data_source.subprocess.check_output"
|
||||
# )
|
||||
# mock_environ_copy = mocker.patch(
|
||||
# "zhenxun.builtin_plugins.check.data_source.os.environ.copy"
|
||||
# )
|
||||
# mock_environ_copy_return = mocker.MagicMock()
|
||||
# mock_environ_copy.return_value = mock_environ_copy_return
|
||||
# (
|
||||
# mock_psutil,
|
||||
# mock_cpuinfo,
|
||||
# mock_platform,
|
||||
# mock_template_to_pic,
|
||||
# mock_template_to_pic_return,
|
||||
# mock_build_message,
|
||||
# mock_build_message_return,
|
||||
# mock_template_path_new,
|
||||
# ) = init_mocker(mocker, tmp_path)
|
||||
|
||||
# mock_platform.uname.return_value = platform_uname_arm
|
||||
# mock_cpuinfo.get_cpu_info.return_value = {}
|
||||
# mock_psutil.cpu_freq.return_value = {}
|
||||
|
||||
# async with app.test_matcher(_matcher) as ctx:
|
||||
# bot = create_bot(ctx)
|
||||
# bot: Bot = cast(Bot, bot)
|
||||
# raw_message = "自检"
|
||||
# event: GroupMessageEvent = _v11_group_message_event(
|
||||
# message=raw_message,
|
||||
# self_id=BotId.QQ_BOT,
|
||||
# user_id=UserId.SUPERUSER,
|
||||
# group_id=GroupId.GROUP_ID_LEVEL_5,
|
||||
# message_id=MessageId.MESSAGE_ID_3,
|
||||
# to_me=True,
|
||||
# )
|
||||
# ctx.receive_event(bot=bot, event=event)
|
||||
# mock_template_to_pic.assert_awaited_once_with(
|
||||
# template_path=str((mock_template_path_new / "check").absolute()),
|
||||
# template_name="main.html",
|
||||
# templates={
|
||||
# "data": {
|
||||
# "cpu_info": "1.0% - 0.0Ghz [1 core]",
|
||||
# "cpu_process": 1.0,
|
||||
# "ram_info": "1.0 / 1.0 GB",
|
||||
# "ram_process": 100.0,
|
||||
# "swap_info": "1.0 / 1.0 GB",
|
||||
# "swap_process": 100.0,
|
||||
# "disk_info": "1.0 / 1.0 GB",
|
||||
# "disk_process": 100.0,
|
||||
# "brand_raw": "",
|
||||
# "baidu": "red",
|
||||
# "google": "red",
|
||||
# "system": f"{platform_uname_arm.system} "
|
||||
# f"{platform_uname_arm.release}",
|
||||
# "version": __get_version(),
|
||||
# "plugin_count": len(nonebot.get_loaded_plugins()),
|
||||
# "nickname": BotConfig.self_nickname,
|
||||
# }
|
||||
# },
|
||||
# pages={
|
||||
# "viewport": {"width": 195, "height": 750},
|
||||
# "base_url": f"file://{mock_template_path_new.absolute()}",
|
||||
# },
|
||||
# wait=2,
|
||||
# )
|
||||
# mock_subprocess_check_output.assert_has_calls(
|
||||
# [
|
||||
# mocker.call(["lscpu"], env=mock_environ_copy_return),
|
||||
# mocker.call().decode(),
|
||||
# mocker.call().decode().splitlines(),
|
||||
# mocker.call().decode().splitlines().__iter__(),
|
||||
# mocker.call(["dmidecode", "-s", "processor-frequency"]),
|
||||
# mocker.call().decode(),
|
||||
# mocker.call().decode().split(),
|
||||
# mocker.call().decode().split().__getitem__(0),
|
||||
# mocker.call().decode().split().__getitem__().__float__(),
|
||||
# ] # type: ignore
|
||||
# )
|
||||
# mock_template_to_pic.assert_awaited_once()
|
||||
# mock_build_message.assert_called_once_with(mock_template_to_pic_return)
|
||||
# mock_build_message_return.send.assert_awaited_once()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user