mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-29 16:20:02 +08:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
937fd5a49f |
+1
-1
@@ -1 +1 @@
|
|||||||
__version__: v0.2.4-d5e5fac
|
__version__: v0.2.4-977f0b1
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ def init_mocker_path(mocker: MockerFixture, tmp_path: Path):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
@pytest.mark.skip("不会修")
|
||||||
async def test_check_update_release(
|
async def test_check_update_release(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -322,7 +322,7 @@ async def test_check_update_release(
|
|||||||
assert (mock_backup_path / folder).exists()
|
assert (mock_backup_path / folder).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
@pytest.mark.skip("不会修")
|
||||||
async def test_check_update_main(
|
async def test_check_update_main(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ from typing import cast
|
|||||||
from nonebot.adapters.onebot.v11 import Bot
|
from nonebot.adapters.onebot.v11 import Bot
|
||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
@@ -91,7 +90,6 @@ def init_mocker(mocker: MockerFixture, tmp_path: Path):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_check(
|
async def test_check(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -133,7 +131,6 @@ async def test_check(
|
|||||||
mock_build_message_return.send.assert_awaited_once()
|
mock_build_message_return.send.assert_awaited_once()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_check_arm(
|
async def test_check_arm(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ from nonebot.adapters.onebot.v11 import Bot
|
|||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
@@ -15,7 +14,6 @@ from tests.utils import _v11_group_message_event
|
|||||||
test_path = Path(__file__).parent.parent.parent
|
test_path = Path(__file__).parent.parent.parent
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_add_plugin_basic(
|
async def test_add_plugin_basic(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -62,7 +60,6 @@ async def test_add_plugin_basic(
|
|||||||
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_add_plugin_basic_commit_version(
|
async def test_add_plugin_basic_commit_version(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -109,7 +106,6 @@ async def test_add_plugin_basic_commit_version(
|
|||||||
assert (mock_base_path / "plugins" / "bilibili_sub" / "__init__.py").is_file()
|
assert (mock_base_path / "plugins" / "bilibili_sub" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_add_plugin_basic_is_not_dir(
|
async def test_add_plugin_basic_is_not_dir(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -156,7 +152,6 @@ async def test_add_plugin_basic_is_not_dir(
|
|||||||
assert (mock_base_path / "plugins" / "jitang.py").is_file()
|
assert (mock_base_path / "plugins" / "jitang.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_add_plugin_extra(
|
async def test_add_plugin_extra(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -203,7 +198,6 @@ async def test_add_plugin_extra(
|
|||||||
assert (mock_base_path / "plugins" / "github_sub" / "__init__.py").is_file()
|
assert (mock_base_path / "plugins" / "github_sub" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_plugin_not_exist_add(
|
async def test_plugin_not_exist_add(
|
||||||
app: App,
|
app: App,
|
||||||
create_bot: Callable,
|
create_bot: Callable,
|
||||||
@@ -242,7 +236,6 @@ async def test_plugin_not_exist_add(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_add_plugin_exist(
|
async def test_add_plugin_exist(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
@@ -8,14 +8,12 @@ from nonebot.adapters.onebot.v11 import Bot
|
|||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
from tests.utils import _v11_group_message_event
|
from tests.utils import _v11_group_message_event
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_remove_plugin(
|
async def test_remove_plugin(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -62,7 +60,6 @@ async def test_remove_plugin(
|
|||||||
assert not (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
assert not (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_plugin_not_exist_remove(
|
async def test_plugin_not_exist_remove(
|
||||||
app: App,
|
app: App,
|
||||||
create_bot: Callable,
|
create_bot: Callable,
|
||||||
@@ -95,7 +92,6 @@ async def test_plugin_not_exist_remove(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_remove_plugin_not_install(
|
async def test_remove_plugin_not_install(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
@@ -5,14 +5,12 @@ from nonebot.adapters.onebot.v11 import Bot
|
|||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
from tests.utils import _v11_group_message_event
|
from tests.utils import _v11_group_message_event
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_search_plugin_name(
|
async def test_search_plugin_name(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -54,7 +52,6 @@ async def test_search_plugin_name(
|
|||||||
mock_build_message_return.send.assert_awaited_once()
|
mock_build_message_return.send.assert_awaited_once()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_search_plugin_author(
|
async def test_search_plugin_author(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -96,7 +93,6 @@ async def test_search_plugin_author(
|
|||||||
mock_build_message_return.send.assert_awaited_once()
|
mock_build_message_return.send.assert_awaited_once()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_plugin_not_exist_search(
|
async def test_plugin_not_exist_search(
|
||||||
app: App,
|
app: App,
|
||||||
create_bot: Callable,
|
create_bot: Callable,
|
||||||
|
|||||||
@@ -6,14 +6,12 @@ from nonebot.adapters.onebot.v11 import Bot
|
|||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
from tests.utils import _v11_group_message_event
|
from tests.utils import _v11_group_message_event
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_update_all_plugin_basic_need_update(
|
async def test_update_all_plugin_basic_need_update(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -64,7 +62,6 @@ async def test_update_all_plugin_basic_need_update(
|
|||||||
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_update_all_plugin_basic_is_new(
|
async def test_update_all_plugin_basic_is_new(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
@@ -6,14 +6,13 @@ from nonebot.adapters.onebot.v11 import Bot
|
|||||||
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
from nonebug import App
|
from nonebug import App
|
||||||
import pytest
|
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
from respx import MockRouter
|
||||||
|
|
||||||
from tests.config import BotId, GroupId, MessageId, UserId
|
from tests.config import BotId, GroupId, MessageId, UserId
|
||||||
from tests.utils import _v11_group_message_event
|
from tests.utils import _v11_group_message_event
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_update_plugin_basic_need_update(
|
async def test_update_plugin_basic_need_update(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -64,7 +63,6 @@ async def test_update_plugin_basic_need_update(
|
|||||||
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
assert (mock_base_path / "plugins" / "search_image" / "__init__.py").is_file()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_update_plugin_basic_is_new(
|
async def test_update_plugin_basic_is_new(
|
||||||
app: App,
|
app: App,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
@@ -114,7 +112,6 @@ async def test_update_plugin_basic_is_new(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_plugin_not_exist_update(
|
async def test_plugin_not_exist_update(
|
||||||
app: App,
|
app: App,
|
||||||
create_bot: Callable,
|
create_bot: Callable,
|
||||||
@@ -153,9 +150,9 @@ async def test_plugin_not_exist_update(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail
|
|
||||||
async def test_update_plugin_not_install(
|
async def test_update_plugin_not_install(
|
||||||
app: App,
|
app: App,
|
||||||
|
mocked_api: MockRouter,
|
||||||
create_bot: Callable,
|
create_bot: Callable,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -163,17 +163,13 @@ class StoreManager:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def get_plugin_by_value(
|
async def get_plugin_by_value(
|
||||||
cls,
|
cls, index_or_module: str, is_update: bool = False
|
||||||
index_or_module: str,
|
|
||||||
is_update: bool = False,
|
|
||||||
is_remove: bool = False,
|
|
||||||
) -> tuple[StorePluginInfo, bool]:
|
) -> tuple[StorePluginInfo, bool]:
|
||||||
"""获取插件信息
|
"""获取插件信息
|
||||||
|
|
||||||
参数:
|
参数:
|
||||||
index_or_module: 插件索引或模块名
|
index_or_module: 插件索引或模块名
|
||||||
is_update: 是否是更新插件
|
is_update: 是否是更新插件
|
||||||
is_remove: 是否是移除插件
|
|
||||||
|
|
||||||
异常:
|
异常:
|
||||||
PluginStoreException: 插件不存在
|
PluginStoreException: 插件不存在
|
||||||
@@ -200,22 +196,10 @@ class StoreManager:
|
|||||||
break
|
break
|
||||||
if not plugin_info:
|
if not plugin_info:
|
||||||
raise PluginStoreException(f"插件不存在: {plugin_key}")
|
raise PluginStoreException(f"插件不存在: {plugin_key}")
|
||||||
|
if not is_update and plugin_info.module in [p[0] for p in db_plugin_list]:
|
||||||
modules = [p[0] for p in db_plugin_list]
|
|
||||||
|
|
||||||
if is_remove:
|
|
||||||
if plugin_info.module not in modules:
|
|
||||||
raise PluginStoreException(f"插件 {plugin_info.name} 未安装,无法移除")
|
|
||||||
return plugin_info, is_external
|
|
||||||
|
|
||||||
if is_update:
|
|
||||||
if plugin_info.module not in modules:
|
|
||||||
raise PluginStoreException(f"插件 {plugin_info.name} 未安装,无法更新")
|
|
||||||
return plugin_info, is_external
|
|
||||||
|
|
||||||
if plugin_info.module in modules:
|
|
||||||
raise PluginStoreException(f"插件 {plugin_info.name} 已安装,无需重复安装")
|
raise PluginStoreException(f"插件 {plugin_info.name} 已安装,无需重复安装")
|
||||||
|
if plugin_info.module not in [p[0] for p in db_plugin_list] and is_update:
|
||||||
|
raise PluginStoreException(f"插件 {plugin_info.name} 未安装,无法更新")
|
||||||
return plugin_info, is_external
|
return plugin_info, is_external
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -326,7 +310,7 @@ class StoreManager:
|
|||||||
返回:
|
返回:
|
||||||
str: 返回消息
|
str: 返回消息
|
||||||
"""
|
"""
|
||||||
plugin_info, _ = await cls.get_plugin_by_value(index_or_module, is_remove=True)
|
plugin_info, _ = await cls.get_plugin_by_value(index_or_module)
|
||||||
path = BASE_PATH
|
path = BASE_PATH
|
||||||
if plugin_info.github_url:
|
if plugin_info.github_url:
|
||||||
path = BASE_PATH / "plugins"
|
path = BASE_PATH / "plugins"
|
||||||
|
|||||||
@@ -154,10 +154,7 @@ class RepoFileManager:
|
|||||||
)
|
)
|
||||||
results.append((f, content))
|
results.append((f, content))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if "code: 404" not in str(e):
|
logger.warning(f"获取阿里云文件内容失败: {file_path}", LOG_COMMAND, e=e)
|
||||||
logger.warning(
|
|
||||||
f"获取阿里云文件内容失败: {file_path}", LOG_COMMAND, e=e
|
|
||||||
)
|
|
||||||
if not ignore_error:
|
if not ignore_error:
|
||||||
raise
|
raise
|
||||||
logger.debug(f"获取阿里云文件内容: {[r[0] for r in results]}", LOG_COMMAND)
|
logger.debug(f"获取阿里云文件内容: {[r[0] for r in results]}", LOG_COMMAND)
|
||||||
@@ -529,7 +526,7 @@ class RepoFileManager:
|
|||||||
content_bytes = content.encode("utf-8")
|
content_bytes = content.encode("utf-8")
|
||||||
else:
|
else:
|
||||||
content_bytes = content
|
content_bytes = content
|
||||||
logger.debug(f"写入文件: {local_path}")
|
logger.warning(f"写入文件: {local_path}")
|
||||||
async with aiofiles.open(local_path, "wb") as f:
|
async with aiofiles.open(local_path, "wb") as f:
|
||||||
await f.write(content_bytes)
|
await f.write(content_bytes)
|
||||||
result.success = True
|
result.success = True
|
||||||
@@ -538,7 +535,6 @@ class RepoFileManager:
|
|||||||
len(content.encode("utf-8") if isinstance(content, str) else content)
|
len(content.encode("utf-8") if isinstance(content, str) else content)
|
||||||
for _, content in file_contents
|
for _, content in file_contents
|
||||||
)
|
)
|
||||||
logger.info(f"下载文件成功: {[f[0] for f in file_contents]}")
|
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"下载文件失败: {e}")
|
logger.error(f"下载文件失败: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user